2017-04-16 4 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()関数はnullで終わるchar文字列へのポインタを期待し、あなたはそれに直接std::stringを渡すことはできません。

これを使用するための正しい方法は次のようになります。strcasecmp()戻りZERO場合、文字列が等しいので

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

はまた、コードは、あなたのプログラムに間違って見えます。だから、あなたは以下を使用する必要があります。

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

strcasecmpを示し引数としてconst char*、ないstd::stringをとります。代わりにstrcasecmp(s.c_str(), "TEST")を使用するか、sを最初にCスタイルの文字列にします。

3

それはstrcasecmpは、Cスタイルの文字列(0char[]を終了し)ないC++ stringを期待する意味します。あなたはs.c_str()で1つを得ることができます。

1

あなたは

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

文字列をchar *にキャストできません* –

+0

@TheApache、はい、正しいです – tkrishtop

関連する問題