无法成功比较字符串

时间:2015-02-20 04:06:30

标签: c++ string file io compare

想法是获取文件并打印出文件中的单词数量。然后提示用户输入一个单词,程序将计算该单词被迭代的次数。但是,我无法从文件中挑选出所选的单词,无论它仍然返回0。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(){
    fstream infile;
    int i = 0;
    string word_counter;
    string file_name;
    bool opened = false;

    while (opened == false){
        cout << "Enter the name of the file to read: ";
        cin >> file_name;

        infile.open(file_name, fstream::in);
        opened = true;

        if (!infile.is_open()) {
            cout << "ERROR: CANNOT OPEN INPUT FILE" << endl;
            cout << endl;
            opened = false;
        }
    }

    while (!infile.eof()){
        infile >> word_counter;
        cout << word_counter << endl;
        i++;
    }

    cout << "Read in " << i << " words\n";

    bool done = false;

    while (!done){
        string word;
        string quit;
        int x = 0;
        cout << "Enter a word to count how many times it occurs: ";
        cin >> word;

        while (!infile.eof()){
            infile << word_counter;
            if (word_counter == word){
                x++;
            }
        }

        cout << "The word \"" << word << "\" occurs " << x << " times" << endl;
        cout << "Press any key to continue, or press Q to quit: ";
        cin >> quit;

        if (quit == "q" || quit == "Q"){
            done = true;
        }
    }

    infile.close();

    return 0;
}

1 个答案:

答案 0 :(得分:0)

您忘记了回放文件。

添加以下行

infile.clear();  // Clear the EOF flag
infile.seekg(0); // rewind

之后

cin >> word;

此外,您在

行中使用<<代替>>
infile << word_counter;

由于您没有从文件中读取任何内容,因此封闭的while块将保持无限循环。将该行更改为:

infile >> word_counter;