0

件名に記載されているとおり: C++>で ,によって文字列を比較してもよろしいですか? <エラーは発生しませんが、常に良い結果が得られるかどうかはわかりませんか?

string a = "aabbsd", b= "bsdds";
cout<<(a<b);

結果はただの運ですか?

4

2 に答える 2

1

これにより、辞書式比較がトリガーされます。cppreferenceから:

operator==,!=,<,<=,>,>=(std::basic_string)
C++  Strings library std::basic_string   

template< class T, class Alloc >
bool operator==( basic_string<T,Alloc>& lhs, basic_string<T,Alloc>& rhs );
(1) 

template< class T, class Alloc >
bool operator!=( basic_string<T,Alloc>& lhs, basic_string<T,Alloc>& rhs );
(2) 

template< class T, class Alloc >
bool operator<( basic_string<T,Alloc>& lhs, basic_string<T,Alloc>& rhs );
(3) 

template< class T, class Alloc >
bool operator<=( basic_string<T,Alloc>& lhs, basic_string<T,Alloc>& rhs );
(4) 

template< class T, class Alloc >
bool operator>( basic_string<T,Alloc>& lhs, basic_string<T,Alloc>& rhs );
(5) 

template< class T, class Alloc >
bool operator>=( basic_string<T,Alloc>& lhs, basic_string<T,Alloc>& rhs );
(6) 

2 つの文字列の内容を比較します。
1-2) lhs と rhs の内容が等しいかどうか (つまり、lhs.size() == rhs.size()) をチェックし、lhs の各文字が rhs の同じ位置に同等の文字を持っているかどうかを確認します。
3-6) lhs と rhs の内容を辞書的に比較します。比較は、std::lexicographical_compare と同等の関数によって実行されます。

于 2013-04-28T18:02:03.590 に答える