4

私は現在、constchar*を返すgetResultというメソッドを持っています。今私はこのようなことをしています

if(getResult=="Something")
{
  ...
}

ただし、このタイプの比較は機能しないようです。「何か」もconstcharポインタではありませんか?またはこの場合、アドレスは比較されていますか?

4

3 に答える 3

5

getResultがメソッド(メンバー関数)の場合、結果を比較するためにそれを呼び出す必要があるため、おそらく次のようにします。

if (something.getResult() == std::string("Something"))
  // ...

一方、getResult実際にcharへのポインター(またはconst charへのポインター)である場合は、比較するstring前に、比較しているものの1つを変換する必要があります):

if (getResult == std::string("Something"))

また:

if (std::string(getResult) == "something))

IMO、これほとんど必要ありません。[const] charへのポインタから始めて変換する代わりに、通常はstd::string全体で使用する必要があります。

于 2013-02-09T00:06:23.287 に答える
4

はい、アドレスは比較されています。2つの文字列の内容を比較するには、次のstrcmp関数を使用します。

if (strcmp(getResult, "Something") == 0) {
    ...
}
于 2013-02-09T00:06:31.617 に答える
2

C / C ++で2つの文字列定数を比較する場合は、内容ではなく、各文字列の実際のアドレスを比較します。strcmp2つのc-stringを使用するか、C ++のクラスを使用std::stringすると、コンテンツが比較されます。

于 2013-02-09T00:08:54.130 に答える