2013-03-04 13 views
5

私はC++の文字列のアルファベット順について質問します。私たちは、私は2つの文字列を持っているとしましょう:
C++の文字列の< and >はアルファベット順になっていますか?

string x="asd123"; 
    string y="asd136"; 


我々は<または>演算子とこれらの文字列を比較することはできますか?例えば:私たちが言うことができ

if(x>y) 
    cout<<"....."; 

は常に働くことをしていますか?ありがとう。

+7

読み込み:http://ja.cppreference.com/w/cpp/string/basic_string/operator_cmp – billz

答えて

9

文字列は辞書順(辞書形式)で比較されます。文字列は、長い文字列の前に来る別の文字列の短い部分集合です。しかし、必ずしもアルファベットではない;基本的な文字エンコーディングに従っています。最近のシステムではASCIIを使用しているので、小文字が順番に出てきて、大文字が順番に出てきて、大文字は小文字の前に来ます。

+1

A~Z文字。 Å、ä、ö、、、ǹ、í、é、è、ëなどの他の多くの類似したもののような英語以外の特殊文字は、 –

6

はい、std::stringstd::string::operator>と比較すると、常に機能します。文字列は、lexicographicallyと比較されます。これは、2つの文字列のそれぞれの対応する要素が、等しくない2つが見つかるまで順番に比較され、その順序が文字列の順序を決定することを意味します。

std::basic_stringの各要素には、辞書順で<が実行されます。すなわち、std::stringの場合、それぞれchar<を使用して比較されます。単にcharの値を比較します。 C++に関する限り、charは単なる数値です。これらの値は、実行文字セット(最新のC++コンパイラでは、ほとんどの場合、少なくともASCII互換性があります)によって文字列リテラルの文字にマップされます。

+1

@pst: 'string'は文字ではなくバイトの集合です。比較はバイト値によるものです。無料のランチはありません。 –

+0

@BenjaminLindley良い点、ありがとう。 –

+0

@pst私の編集はそれをカバーしています。 –

関連する問題