2つの文字列を比較したいと思います。 strcmp
で可能ですか? (試してみましたが、うまくいかないようです)。 string::compare
解決策?
これ以外に、string
をchar
と比較する方法はありますか?
初期のコメントをありがとう。私はC++でコーディングしていましたが、そうですstd::string
あなたの何人かが言及したように。一般的な知識を学びたかったので、コードを投稿しませんでした。コードはかなり長いので、質問には関係ありませんでした。
それを指摘してくれてありがとう、C++とCの違いを学んだと思います。そして、オーバーロードされた演算子を使用してみます。ところで string::compare
も機能しました。
C++の場合は、std::string
を使用し、string::compare
を使用して比較します。
Cの場合は、strcmp
を使用します。 (私はあなたのプログラムを意味します)文字列(何らかの奇妙な理由で)がnul
で終了していない場合は、代わりにstrncmp
を使用してください。
しかし、なぜ誰かがnot==
のような単純なものをstd::string
に使用するのでしょうか?
std::string
を意味すると仮定して、オーバーロードされた演算子str1 == str2
、str1 < str2
を使用しないのはなぜですか?
std::basic_string::compare
および std::basic_string
演算子リファレンス を参照してください(特に、operator==
、operator!=
、operator<
などが存在します)。他に何か要りますか?
std :: stringには、埋め込まれたヌル文字を含めることができます(そして比較できます!)。
are * comp(...)は、cスタイルの文字列を比較し、最初のnull文字(または指定されたバイト/文字の最大数)まで比較します。
string :: compareは実際にはテンプレートbasic_stringとして実装されているため、wstringなどの他のタイプでも機能することが期待できます。
「文字列を文字と比較する」という不明確なフレーズでは、文字を* string.begin()と比較するか、最初に出現する文字列を検索できます(string :: find_first_ofおよびstring :: find_first_not_of)
免責事項:私のHTCに入力、タイプミスは予約済み:)
C++を使用する場合は、C++関数を使用してください。 string::compare
。 Cを使用していて、文字列にchar*
を使用する必要がある場合は、strcmp
を使用します。
あなたの質問では、「文字列を文字と比較する方法はありますか?」 「特定の文字が文字列に含まれているかどうかを確認するにはどうすればよいですか?」という意味ですか?その場合、Cライブラリ関数は次のとおりです。
char *strchr(const char *s, int c);
あなたのためにそれをします。
-ピート