如果存在一个单词,则触发C ++

时间:2014-11-03 03:25:52

标签: c++ string if-statement

贝娄是显而易见的。它在文本中找到我们想要的单词,在本例中为“hi”。然后它运行那个程序。

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。我希望这是有道理的。谢谢。

2 个答案:

答案 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;
}

这正是您所寻找的。

答案 1 :(得分:-1)

我不太了解c ++,但我知道你可以在hi之后添加一个空格:“hi”。它会在“hi”之后找一个空格。

std::getline(std::cin, text);   
if(test.find("hi ") != std::string::npos)
{
     //thing 1
}