如何比较字符串

Ano*_*non 26 c++ string compare

我想比较一个字符串,而不是将其中一个实际定义为字符串,就像这样,

if (string == 'add')
Run Code Online (Sandbox Code Playgroud)

我是否必须声明'add'为字符串或是否可以以类似的方式进行比较?

e.J*_*mes 63

在C++中,std :: string类实现了比较运算符,因此您可以按照==预期执行比较:

if (string == "add") { ... }
Run Code Online (Sandbox Code Playgroud)

如果使用得当,运算符重载是一个很好的C++特性.

  • 但是应该注意,如果"string"是`char*`,那么比较会产生不同的结果! (3认同)
  • e.James:如果"string"是std :: string,那么`if(strcmp(string.c_str(),"add")== 0){...}`会起作用. (2认同)

Chr*_*ong 8

你需要使用strcmp.

if (strcmp(string,"add") == 0){
    print("success!");
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:`strcmp()`是一个C函数,它将指向`const char*`的指针作为参数.它适用于这种情况,因为`std :: string`对象被转换回`const char*`,但这不是*不是*在C++中做事的最好方法 (9认同)
  • @ e.James:不,`std :: string`没有隐式转换为`const char*`,你需要调用`s.c_str()`.但根据问题"没有将任何一个定义为字符串",`string`不是一个`std :: string`开头. (5认同)
  • 在C代码中,您应该首选strncmp()而不是strcmp(),这是更安全的解决方案。 (2认同)