std::getline(std::cin, text);
if(text.find("hi") != std::string::npos
{
/////thing1/////
}
问题是如果我们输入“历史是一个主题”
std::getline(std::cin, text);
if(text.find("history is a subject") != std::string::npos
{
/////thing2/////
}
因为“hi”存在于两者中,所以thing1和thing2都会运行。
是否有可能制定一个要求只使“hi”触发thing1?完全“喜”。没有其他任何东西可以打字。因此,如果输入“历史是主题”,则只会运行thing2。我希望这是有道理的。谢谢。
答案 0 :(得分:1)
在此处运行:http://ideone.com/T4f5g8
#include <iostream>
#include <regex>
using namespace std;
int main() {
string text = "hi";
regex rgx(text);
if(regex_match("history is a subject", rgx) == true)
cout << "false"; // never gona print as rgx=hi
if(regex_match("hi", rgx) == true)
cout << "Matched";
return 0;
}
这正是您所寻找的。 p>
答案 1 :(得分:-1)
我不太了解c ++,但我知道你可以在hi之后添加一个空格:“hi”。它会在“hi”之后找一个空格。
std::getline(std::cin, text);
if(test.find("hi ") != std::string::npos)
{
//thing 1
}