件名に記載されているとおり: C++>
で ,によって文字列を比較してもよろしいですか? <
エラーは発生しませんが、常に良い結果が得られるかどうかはわかりませんか?
string a = "aabbsd", b= "bsdds";
cout<<(a<b);
結果はただの運ですか?
件名に記載されているとおり: C++>
で ,によって文字列を比較してもよろしいですか? <
エラーは発生しませんが、常に良い結果が得られるかどうかはわかりませんか?
string a = "aabbsd", b= "bsdds";
cout<<(a<b);
結果はただの運ですか?
これにより、辞書式比較がトリガーされます。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 と同等の関数によって実行されます。