无法成功比较字符串

Unable to successfully compare strings

本文关键字:字符串 比较 成功      更新时间:2023-10-16

这个想法是取一个文件并打印出文件中的单词数量。然后提示用户输入一个单词,程序会计算该单词的迭代次数。然而,我在从文件中挑选所选单词时遇到了问题,无论它仍然返回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 << " wordsn";
    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;
}

您忘记倒带文件。

添加以下行

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

之后

cin >> word;

此外,在行中使用<<而不是>>

infile << word_counter;

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

infile >> word_counter;