如何使用if语句检查字符串文字是否是某个单词或短语

时间:2015-03-26 01:14:21

标签: c++ string if-statement

我还不熟悉编码,正在试图找出简单的对话,我在编译时遇到以下错误:

  

错误:无法转换'str.std :: basic_string< _CharT,_Traits,_Alloc> :: operator =,std :: allocator>(((const char *)“good”))''来自'std: :basic_string'到'bool'     if(str =“good”){

  

错误:无法转换'str.std :: basic_string< _CharT,_Traits,_Alloc> :: operator =,std :: allocator>(((const char *)“bad”))''来自'std: :basic_string'到'bool'     否则if(str =“bad”){

我从以下代码中获取了这些错误。请记住,我对此仍然很陌生:

// random practice on conversation
#include <iostream>
#include <string>
using namespace std;

int main ()
{
    string str;
    string bad;

    cout << "How has your day been?  \n";
    cin >> str;
    if (str = "good") {
        cout << "Thats good to hear!\n";
    }
    else if (str = "bad") {
        cout << "That's too bad, what happened?  \n";
        cin >> bad;
        cout << "I'm sorry to hear that...\n";
    }
    else {
        cout << "I'm sorry, I couldn't understand you...\n";
    }
}

3 个答案:

答案 0 :(得分:4)

=不是比较运算符,它是赋值运算符。 ==是比较运算符。

if( str == "bad" )
{
...
}

答案 1 :(得分:2)

if(str == "good"){


}

您需要双等号,否则您将字符串变量str设置为"good""bad",而不是检查它是否等于。

答案 2 :(得分:1)

在C / C ++中,==运算符不适用于字符串。如果要比较两个字符串s1和s2,请使用s1.compare(s2)或函数的其他变体。您也可以使用strncmp()函数。