将string文件读入vector
ifstream data_file("data.txt"); //text file containing data istream_iterator<int> start(data_file), eos; vector<int> data(start, eos);
昨天调试了好久这三行代码,每次读出来发现只能传输第一个数字,很是苦恼,以为这样无法实现file到vector的传输。其实不然。
#include <iostream> #include <iterator> #include <fstream> #include <vector> using namespace std; int main(void){ ifstream data_file("data.txt"); //text file containing data istream_iterator<char> start(data_file), end; vector<char> data(start, end); for(auto it = start; it != end; ++it) { cout << *it << endl;} }
以上是我一开始的代码,这里我忽略了一个问题,我把start赋值给了it,所以我遍历的其实是文件流data_file里的元素,但是我将文件流赋给了vector,这对文件流里的元素产生了改变是之只剩下开头第一个元素,所以不管我如何输出都只会输出开头第一个元素。经过修改便可以输出正确结果了
#include <iostream> #include <iterator> #include <fstream> #include <vector> using namespace std; int main(void){ ifstream data_file("data.txt"); //text file containing data istream_iterator<char> start(data_file), end; vector<char> data(start, end); for(auto it = data.begin(); it != data.end(); ++it) { cout << *it << endl;} }