web-dev-qa-db-ja.com

strcmpまたはstring :: compare?

2つの文字列を比較したいと思います。 strcmpで可能ですか? (試してみましたが、うまくいかないようです)。 string::compare 解決策?

これ以外に、stringcharと比較する方法はありますか?


初期のコメントをありがとう。私はC++でコーディングしていましたが、そうですstd::stringあなたの何人かが言及したように。一般的な知識を学びたかったので、コードを投稿しませんでした。コードはかなり長いので、質問には関係ありませんでした。

それを指摘してくれてありがとう、C++とCの違いを学んだと思います。そして、オーバーロードされた演算子を使用してみます。ところで string::compareも機能しました。

11
Perex19

C++の場合は、std::stringを使用し、string::compareを使用して比較します。

Cの場合は、strcmpを使用します。 (私はあなたのプログラムを意味します)文字列(何らかの奇妙な理由で)がnulで終了していない場合は、代わりにstrncmpを使用してください。

しかし、なぜ誰かがnot==のような単純なものをstd::stringに使用するのでしょうか?

26
Sadique

std::stringを意味すると仮定して、オーバーロードされた演算子str1 == str2str1 < str2を使用しないのはなぜですか?

12
Mark B

std::basic_string::compare および std::basic_string演算子リファレンス を参照してください(特に、operator==operator!=operator<などが存在します)。他に何か要りますか?

4
ildjarn

std :: stringには、埋め込まれたヌル文字を含めることができます(そして比較できます!)。

are * comp(...)は、cスタイルの文字列を比較し、最初のnull文字(または指定されたバイト/文字の最大数)まで比較します。

string :: compareは実際にはテンプレートbasic_stringとして実装されているため、wstringなどの他のタイプでも機能することが期待できます。

「文字列を文字と比較する」という不明確なフレーズでは、文字を* string.begin()と比較するか、最初に出現する文字列を検索できます(string :: find_first_ofおよびstring :: find_first_not_of)

免責事項:私のHTCに入力、タイプミスは予約済み:)

1
sehe

C++を使用する場合は、C++関数を使用してください。 string::compare。 Cを使用していて、文字列にchar*を使用する必要がある場合は、strcmpを使用します。

1
doron

あなたの質問では、「文字列を文字と比較する方法はありますか?」 「特定の文字が文字列に含まれているかどうかを確認するにはどうすればよいですか?」という意味ですか?その場合、Cライブラリ関数は次のとおりです。

  char *strchr(const char *s, int c);

あなたのためにそれをします。

-ピート

1
Pete Wilson