つまり、文字列比較における C と C++ の違いは何ですか?
私は「C」キャンプから来ました。== を使用して文字列を比較するプログラムを見たので、オーバーロードしているプログラムを見つけようとしましたが、見つかりませんでした。C++ は文字列 (char []) を == と != で自然に扱うということですか?
独自に定義した String クラスがある場合、定義せずに == と != を使用できるのと同じでしょうか? それともchar []にのみ適用されますか?
編集:
C の char[] を C++ std::string クラスと混合したようです。OK、古い質問がまだ適用されます。私のプログラムはchar
[] 変数を定義しましたが、"==" 演算子と比較しました。それは仕事のようでした。これらは C スタイルの文字列ですが、「==」で機能します。プログラムが機能するように、コンパイラはそれらを std::string に自動変換しましたか?
Edit2:
これは実際のサンプルです。
if(name == "") return;
ここで、「name」は MyString クラス アイテムです。パラメータ char* を持つコンストラクタがあります。
MyString には public 関数 data() があり、char* C スタイルの文字列ポインターを返します。
では、MyString オブジェクトを比較していますか? またはCスタイルの文字列?
オーバーロードなしで "!=" 自分で、以下のようなことはできますか?
if( name.data() != somes_[i].data() )
....