0

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;

        }
    }
};
4

2 に答える 2

1

これを試して:

class Tokenizer {
    fstream& fin;

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

...
}
于 2012-08-09T05:16:55.800 に答える
0

これが機能するかどうかはわかりません。今はテストできませんが、すぐに実行できます。

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

乾杯

于 2012-08-09T06:57:11.263 に答える