C++ 如何扫描用户的字符串输入以查找特定单词/单词?

C++ How can I scan the user's string input for a specific word/words?

本文关键字:单词 查找 输入 字符串 何扫描 扫描 用户 C++      更新时间:2023-10-16
#include <regex>
#include <string>
#include <iostream>
int main()
{
    using namespace std;
    string sentence;
    cin >> sentence;
    string word = "banana";
    regex r("\b" + word + "\b");
    smatch s;
    if (regex_search(sentence, s, r)) {
        cout << "success" << endl;
    }
}

我得到了这个部分工作。我输入一个包含香蕉这个词的句子,问题来了。如果我输入香蕉作为句子中的第一个单词,它会检测到它(例如:香蕉等),但如果它不是第一个单词(例如:etc banana),它不会检测到它。有修复方法吗?是的,我正在使用命名空间,因为它让我的生活更轻松。

"我输入一个包含香蕉这个词的句子,问题来了。如果我输入香蕉作为句子中的第一个单词,它会检测到它(例如:香蕉等),但如果它不是第一个单词(例如:etc banana),它就不会检测到它。

您拥有的代码

std::cin >> sentence;

仅从输入中读取单个单词(直到下一个空格分隔符)。

"有解决办法吗?"

当然:如果你想从输入中得到一个完整的句子,你宁愿使用

std::getline(std::cin,sentence);
<小时 />

另请注意,在如此简单的案例中使用std::regex()太重了。如果您真的只想查找简单的序列,例如"banana"而不是模式,std::string::find() 将很好地为您服务(成本要低得多)。

<小时 />

"是的,我正在使用命名空间,因为它让我的生活更轻松。"

最后,它不会让你的生活更轻松,而是恰恰相反。你只是容易与代码中的std命名空间发生冲突(例如,考虑min()max()swap()等的用户定义函数)。