从文件读取时使用插入迭代器 [英] Using Insert Iterators when reading from file
问题描述
您可以使用 Insert Iterators
从文件读取数据到STL容器吗?
例如:
FILE * stream;
fread(back_inserter(std :: list),sizeof(int),1,stream);
C ++流与C stdio流不兼容。换句话说,你不能在C ++迭代器中使用 假设您有一个输入文件input.txt,其中包含由空格分隔的ASCII文本编号,您可以执行: can you use for example:
C++ streams are not compatible with C stdio streams. In other words, you can't use C++ iterators with Assuming you have an input file "input.txt" which contains ASCII text numbers separated by whitespace, you can do:
这篇关于从文件读取时使用插入迭代器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! FILE *
或者 fread
。但是,如果您使用C ++ std :: fstream
设施以及 istream_iterator
,您可以使用插入迭代器插入到C ++容器中。
#include< iostream>
#include< fstream>
#include< vector>
#include< iterator>
int main()
{
std :: ifstream ifs(input.txt);
std :: vector< int> VEC;
//从磁盘读取数字
std :: copy(std :: istream_iterator< int>(ifs),std :: istream_iterator< int>(),std :: back_inserter(vec)) ;
//现在输出整数
std :: copy(vec.begin(),vec.end(),std :: ostream_iterator< int>(std :: cout,\\\
) );
}
Insert Iterators
while reading from a file to put the data into STL container?FILE *stream;
fread(back_inserter(std::list), sizeof(int), 1, stream);
FILE*
or fread
. However, if you use the C++ std::fstream
facilities along with istream_iterator
, you can use an insertion iterator to insert into a C++ container.#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"));
}