将字符串与文本进行比较

时间:2011-12-31 14:33:15

标签: c++ string compare

当我尝试这个时:

string msm_arg1;

...

if (msm_arg1 = "--console" )
run_console();

我明白了:

res/functions/ReadArgs.h|40|error: could not convert ‘msm_arg1.std::basic_string<_CharT, _Traits, _Alloc>::operator= [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>, std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>](((const char*)"-c"))’ from ‘std::basic_string<char>’ to ‘bool’|

我所看到的是它正在尝试将字符串(msm_arg1)与bool进行比较,“ - console”显然不是。

我可以看到一种可能的方法:创建一个要与之比较的字符串,但是可能会有很多可能的CLI参数,这可能会变得混乱。

我在Ubuntu 11:10上使用Code :: Blocks和默认的gcc。

1 个答案:

答案 0 :(得分:5)

=是赋值运算符。

目前,您的代码执行此操作:

   if (msm_arg1 = "--console")
//     \____________________/
//       assign to msm_arg1;
//      evaluate to new value
// 
   if (msm_arg1)
//     \______/
//      convert string to bool
//       for `if` comparison
//
// ERROR: Can't do that!

C ++中的等价运算符==

if (msm_arg1 == "--console")

另外值得注意的是,这是一个区分大小写的比较,如果您停止使用std::string并尝试比较两个文字,它将无法正常工作。