在文本文件中查找一个单词并在 C++ 中显示该单词的起始位置

问题描述

我目前正在做一个大学项目,在项目中我应该打开一个 .txt 文件获取用户输入的单词并在文本文件搜索是否有任何匹配,如果程序找到一个或多个单词,它应该输出单词的起始位置。 我写了这段代码,但它不能完全工作,我做错了什么或有什么建议吗?真的很感激。

    Myfile.open("Test.txt",ios::in);
    if (Myfile.is_open())
    {
        string line,search;
        int i,j=0,x,y,z=-1;
        while (getline(Myfile,line))
        {
            cin >> search;
            x = line.size();
            y = search.size();
            for ( i = 0; i <= x; i++)
            {
                if (line[i]==search[j])
                {
                    z++;
                    j++;
                    if (z==y)
                    {
                        cout << i-y << " " ;
                        z -= y - 1;
                        j -= y -1;
                    }
                }
                if (i==x)
                {
                    cout << "     That's all I've Found :)  ";
                    break;
                }
            }
        }
    } ```

解决方法

您可以为该任务使用 std::string::find 方法,而不是编写自己的容易出错的代码,该方法只返回您需要的内容:https://www.cplusplus.com/reference/string/string/find/。 如果您需要编写自己的代码而不使用内置方法,请搜索现有的模式匹配算法,例如 Boyer-Moore 或 KMP。