当我尝试这个时:
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。
答案 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
并尝试比较两个文字,它将无法正常工作。