1. ホーム
  2. c++

[解決済み] C++の文字列==とcompare()の違い?

2022-03-23 05:06:21

質問

の使用に関する推奨事項を読んだところです。

std::string s = get_string();
std::string t = another_string();

if( !s.compare(t) ) 
{

ではなく

if( s == t )
{

慣れているのと、自然な感じで読みやすいので、ほとんど最後のを使っています。比較関数が別にあることも知りませんでした。 正確には、==がcompare()を呼び出すのだと思っていました。

どのような違いがあるのでしょうか?どのような文脈で、どちらかを優先すべきでしょうか?

ある文字列が別の文字列と同じ値であるかどうかを知る必要がある場合のみを考えています。

どのように解決するのですか?

について、規格ではこのように書かれています。 operator==

<ブロッククオート

21.4.8.2 operator==

template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& lhs,
                const basic_string<charT,traits,Allocator>& rhs) noexcept;

戻り値: lhs.compare(rhs) == 0.

大差ないように見えるけど!?