微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在文本文件中查找一个单词并在 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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。