C++ の文字列のアルファベット順について質問があります。私は2つの文字列を持っているとしましょう:
string x="asd123";
string y="asd136";
これらの文字列を < または > 演算子と比較できますか? 例:私たちは言うことができますか
if(x>y)
cout<<".....";
それは常に機能しますか?ありがとう。
文字列は辞書式順序で比較され(辞書式)、長い文字列の前にある別の文字列の短いサブセットである文字列と比較されます。ただし、必ずしもアルファベット順ではありません。基になる文字エンコードに従います。最近のほとんどのシステムはASCIIを使用しているため、小文字が順番に出てきて、大文字が順番に出てきて、大文字が小文字の前に出てきます。
はい、std::string
s との比較はstd::string::operator>
常に機能します。文字列は辞書式に比較されます。これは、2 つの文字列の対応する各要素が、等しくない 2 つが見つかるまで順番に比較され、その順序によって文字列の順序が決定されることを意味します。
<
の各要素に対して辞書式順序付けが実行されますstd::basic_string
。つまり、 a のstd::string
場合、それぞれchar
が を使用して比較され<
ます。これらの s の値を単純に比較しますchar
。C++ に関する限り、achar
は単なる数値です。これらの値は、実行文字セットによって文字列リテラルの文字にマップされます(最新の C++ コンパイラでは、ほとんどの場合、少なくとも ASCII 互換です)。