简体   繁体   English

c ++ txt到向量失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM