[英]c++ txt to vector failure
Can't read/get text file(.txt) to vector, tried 3 approaches found on web (numbered 0-1-2).无法读取/获取文本文件 (.txt) 到矢量,尝试了 3 种在网络上找到的方法(编号为 0-1-2)。 So far got number of words (distance algorithm), file size (didn't include code), but no vector.
到目前为止得到了字数(距离算法),文件大小(不包括代码),但没有向量。 Please point me to mistake.
请指出我的错误。 Thank you.
谢谢你。
#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
void intoVector (ifstream &stream, vector<string> &vector) {
string s;
getline (stream, s);
istringstream iss (s);
copy(istream_iterator<string>(iss), istream_iterator<string>(), back_inserter(vector));
}
int main(int argc, const char * argv[]) {
string s1="text.txt";
ifstream file (s1);
if (!file) {
cout<<"Couldn't find file"<<endl; exit(1);
}else {cout<<"File is found"<<endl;}
//words count - o.k.
istream_iterator<string> start(file), end;
cout<<"Word count: "<<distance(start, end)<<endl;//iterator distance - difference beteween 2 iterators, type ptrdiff_t
if (!file.is_open()) {
cout<<"File isn't open"<<endl;
}
//0)try
vector<string> vec1;
intoVector(file, vec1);
cout<<vec1.size()<<endl; //result- 0
//1) try1
vector<string> text1(start, end);
cout<<"Vector size "<<text1.size()<<endl; //result - 1, 1st word
copy(text1.begin(), text1.end(), ostream_iterator<string>(cout, " "));
//2)try2
vector<string> vec2;
string s2;
while (getline(file, s2)) {
vec2.push_back(s2);
}
cout<<"vec size "<<vec2.size()<<endl; //Result -0
}
All approached are working when I disable ifstream_iterator (distance algorithm).当我禁用 ifstream_iterator(距离算法)时,所有方法都在工作。 Previously had to make file size calculation as a function (outside main) 'cause it was conflicting with mentioned iterator
以前必须将文件大小计算作为一个函数(在 main 之外),因为它与提到的迭代器冲突
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.