NRo*_*h44 -3 c++ string compare
当我尝试这个:
string msm_arg1;
Run Code Online (Sandbox Code Playgroud)
...
if (msm_arg1 = "--console" )
run_console();
Run Code Online (Sandbox Code Playgroud)
我明白了:
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’|
Run Code Online (Sandbox Code Playgroud)
我所看到的是它试图将字符串(msm_arg1)与bool进行比较," - console"显然不是.
我可以看到一种可能的方法:创建一个字符串来比较,但很可能有CLI参数,这可能会变得混乱.
我在Ubuntu 11:10上使用Code :: Blocks和默认的gcc.
= 是赋值运算符.
目前,您的代码执行此操作:
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!
Run Code Online (Sandbox Code Playgroud)
C++中的等价运算符是==:
if (msm_arg1 == "--console")
Run Code Online (Sandbox Code Playgroud)
此外,值得注意的是,这是一个区分大小写的比较,如果您停止使用std::string并尝试比较两个文字,它将无法正常工作.