gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:22 24 4
gpt4 key购买 nike

#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;
}
}

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

最佳答案

"I type in a sentence that includes the word banana, and here comes the problem. If I type banana as the first word in my sentence it will detect it(example: banana etc), but if it's not the first word (example: etc banana) it will not detect it."

你拥有的代码

std::cin >> sentence;

只从输入中读取一个单词(直到下一个空白定界符)。

"Is there a fix for it?"

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

std::getline(std::cin,sentence);

另请注意,对这种简单的情况使用 std::regex() 过于繁重。如果您真的只想查找像 "banana" 这样的简单序列而不是模式,std::string::find() ,将为您提供良好的服务(成本要低得多)。


"and yes, I am using namespace because it makes my life easier."

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

关于C++ 如何扫描用户的字符串输入以查找特定的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28926999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com