fstream文件无法读取

时间:2012-08-09 05:08:34

标签: c++ tokenize fstream

我想传递一个fstream对象并对这些单词进行标记。始终打印无法打开hasNextToken()中的文件。愿有人帮助我。

// main.cpp中

int main() {
    string filename = "input.txt";
    fstream inputStream(filename);
    Tokenizer t(inputStream);
    while (t.hasNextToken()) {
    cout << t.nextToken();
 }
}

// Tokenizer.h

class Tokenizer {
    fstream fin;

public:
    Tokenizer(fstream& file)
    {
        fin << file;
    }

    bool hasNextToken() {
        if (!fin) {
            cout << "Could not open file: " << endl;
            exit(0);
        }
        return true;
    }

    string nextToken() {
        string line;
        getline(fin, line);
        if (fin) {
            istringstream sin(line);
            string word;
            sin >> word;
            return word;

        }
    }
};

2 个答案:

答案 0 :(得分:1)

试试这个:

class Tokenizer {
    fstream& fin;

public:
    Tokenizer(fstream& file)
    : fin(file)
    {}

...
}

答案 1 :(得分:0)

我不确定这是否有效,我现在无法测试,但你可以快速完成:

int main() {
    string filename = "input.txt";
    fstream inputStream(filename, ios::in); // add second argument
    // other stuff here
}

干杯