#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”等),它将不会检测到它。有解决办法吗?是的,我使用 namespace 是因为它使我的生活更轻松。
最佳答案
拥有的代码
std::cin >> sentence;
仅从输入中读取单个单词(直到下一个空格分隔符)。当然:如果您想从输入中获取整个句子,则可以使用
std::getline(std::cin,sentence);
还要注意,在这种简单情况下使用
std::regex()
太繁琐了。如果您真的只想查找"banana"
这样的简单序列而不是模式,那么 std::string::find()
会很好地为您服务(成本要低得多)。最后,它不会使您的生活更轻松,而相反。您很容易与代码中的
std
命名空间发生冲突(例如,考虑用户定义的min()
,max()
,swap()
等函数)。