2017-04-16 76 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