我还不熟悉编码,正在试图找出简单的对话,我在编译时遇到以下错误:
错误:无法转换'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";
}
}
答案 0 :(得分:4)
=不是比较运算符,它是赋值运算符。 ==是比较运算符。
if( str == "bad" )
{
...
}
答案 1 :(得分:2)
if(str == "good"){
}
您需要双等号,否则您将字符串变量str
设置为"good"
或"bad"
,而不是检查它是否等于。
答案 2 :(得分:1)
在C / C ++中,==运算符不适用于字符串。如果要比较两个字符串s1和s2,请使用s1.compare(s2)或函数的其他变体。您也可以使用strncmp()函数。