私は現在、constchar*を返すgetResultというメソッドを持っています。今私はこのようなことをしています
if(getResult=="Something")
{
...
}
ただし、このタイプの比較は機能しないようです。「何か」もconstcharポインタではありませんか?またはこの場合、アドレスは比較されていますか?
私は現在、constchar*を返すgetResultというメソッドを持っています。今私はこのようなことをしています
if(getResult=="Something")
{
...
}
ただし、このタイプの比較は機能しないようです。「何か」もconstcharポインタではありませんか?またはこの場合、アドレスは比較されていますか?
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
全体で使用する必要があります。
はい、アドレスは比較されています。2つの文字列の内容を比較するには、次のstrcmp
関数を使用します。
if (strcmp(getResult, "Something") == 0) {
...
}
C / C ++で2つの文字列定数を比較する場合は、内容ではなく、各文字列の実際のアドレスを比較します。strcmp
2つのc-stringを使用するか、C ++のクラスを使用std::string
すると、コンテンツが比較されます。