2017-04-16 166 views
-1
#include <strings.h> 
#include <iostream> 
#include <string> 
#include <cstring> 

using namespace std; 

int main() 
{ 
    string s = "test"; 
    if(strcasecmp(s, "TEST")) 
     cout << "equals"<< endl; 

    return 0; 
} 

帮助需要就如何使用strcasecmp,当我试图编译,编译器保持显示错误消息strcasecmp。无法解决的错误消息

error: cannot convert ‘std::string {aka std::basic_string}’ to ‘const char*’ for argument ‘1’ to ‘int strcasecmp(const char*, const char*)

+0

尝试用'strcasecmp(s.c_str(), “TEST”)' – max66

+0

见http://stackoverflow.com/questions/11635/case-insensitive-string -comparison-in-c –

回答

3

strcasecmp()函数需要一个指向空值终止字符串char,你不能越过std::string直接给它。

使用这应该是正确的方法:

strcasecmp(s.c_str(), "TEST") 

此外,该代码在你的程序不正确,因为strcasecmp()返回零的情况下,该字符串相等。所以,你应该使用下列内容:

if(strcasecmp(s, "TEST") == 0) 
    cout << "equals"<< endl; 
4

strcasecmp需要const char*,不是std::string作为参数。改为使用strcasecmp(s.c_str(), "TEST"),或者首先将s作为C风格的字符串。

3

这意味着strcasecmp预计C风格的字符串(0终止char[])而不是C++ string。你可以用s.c_str()得到一个。

1

你可以尝试

strcasecmp(s.c_str(), "TEST") 
+0

你不能将字符串转换成char * –

+0

@TheApache,是的,你是对的 – tkrishtop

相关问题