将字符串与文本进行比较

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.

Lig*_*ica 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!
Run Code Online (Sandbox Code Playgroud)

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

if (msm_arg1 == "--console")
Run Code Online (Sandbox Code Playgroud)

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