les flux C de ne sont pas compatibles avec les flux de C. En d'autres termes, vous ne pouvez pas utiliser les itérateurs C++ avec FILE*
ou fread
. Toutefois, si vous utilisez les installations C++ std::fstream
avec istream_iterator
, vous pouvez utiliser un itérateur d'insertion à insérer dans un conteneur C++.
En supposant que vous avez un fichier d'entrée « input.txt » qui contient les numéros de texte ASCII séparés par des espaces, vous pouvez faire:
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
int main()
{
std::ifstream ifs("input.txt");
std::vector<int> vec;
// read in the numbers from disk
std::copy(std::istream_iterator<int>(ifs), std::istream_iterator<int>(), std::back_inserter(vec));
// now output the integers
std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, "\n"));
}
peut vous indiquer la fin du flux par exemple à lire 5 entiers? – user963241
Oui, vous pouvez utiliser 'std :: copy_n' qui inclut un paramètre count. –