8

こんにちは、このコードのどこが悪いのか誰でもわかりますか?.

 string s=getString(); //return string

    if(!strcmp(s,"STRING")){
         //Do something
    }

コンパイル中に次のようなエラーが発生します

error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’|
4

5 に答える 5

11

次の行に沿って、s.c_str()a の C 文字列バージョンを取得するために使用する必要があります。std::string

if (!strcmp (s.c_str(), "STRING")) ...

しかし、なぜあなたが単に使用しないのかわかりません:

if (s == "STRING") ...

これははるかに読みやすいです。

于 2013-05-29T09:42:38.193 に答える
5

他の回答と同じようにc_str()メソッドを使用できます。std::string

これを行うこともできます:

if (s == "STRING") { ... }

どちらがより明確で、C を書いているふりをしていません。

于 2013-05-29T09:43:54.520 に答える
1

c_str() を使用する必要があり、問題を解決する必要があります。

于 2013-05-29T09:45:03.300 に答える
1

文字列を比較する C の方法を維持したい場合は、基になる配列を提供するのc_str()メンバー関数を使用する必要があります。std::stringchar

それ以外の場合は、operator==文字列 と の間の等価性をテストできるを使用する必要がありconst char*ます。

于 2013-05-29T09:42:40.093 に答える