std:: strcoll
|
定義先ヘッダ
<cstring>
|
||
|
int
strcoll
(
const
char
*
lhs,
const
char
*
rhs
)
;
|
||
現在のロケール( LC_COLLATE カテゴリで定義)に従って2つのヌル終端バイト文字列を比較します。
目次 |
パラメータ
| lhs, rhs | - | 比較するヌル終端バイト文字列へのポインタ |
戻り値
- lhs が rhs より 小さい (先行する)場合、負の値
- 0 ( lhs が rhs と 等しい 場合)
- lhs が rhs より 大きい (後続する)場合、正の値
注記
照合順序は辞書順です:文字の国語アルファベット内での位置(その 等価クラス )は、大文字小文字や異体字よりも優先されます。等価クラス内では、小文字は対応する大文字よりも前に照合され、アクセント記号付きの文字にはロケール固有の順序が適用される場合があります。一部のロケールでは、文字のグループが単一の 照合単位 として比較されます。例えば、 "ch" はチェコ語では "h" の後、 "i" の前に位置し、 "dzs" はハンガリー語では "dz" の後、 "g" の前に位置します。
例
#include <clocale> #include <cstring> #include <iostream> int main() { std::setlocale(LC_COLLATE, "cs_CZ.utf8"); // Alternatively, ISO-8859-2 (a.k.a. Latin-2) // may also work on some OS: // std::setlocale(LC_COLLATE, "cs_CZ.iso88592"); const char* s1 = "hrnec"; const char* s2 = "chrt"; std::cout << "In the Czech locale: "; if (std::strcoll(s1, s2) < 0) std::cout << s1 << " before " << s2 << '\n'; else std::cout << s2 << " before " << s1 << '\n'; std::cout << "In lexicographical comparison: "; if (std::strcmp(s1, s2) < 0) std::cout << s1 << " before " << s2 << '\n'; else std::cout << s2 << " before " << s1 << '\n'; }
出力:
In the Czech locale: hrnec before chrt In lexicographical comparison: chrt before hrnec
関連項目
|
現在のロケールに従って2つのワイド文字列を比較する
(関数) |
|
|
[virtual]
|
このファセットの照合規則を使用して2つの文字列を比較する
(
std::collate<CharT>
の仮想保護メンバー関数)
|
文字列を変換して、
strcmp
が
strcoll
と同じ結果を生成するようにする
(関数) |
|
|
Cドキュメント
for
strcoll
|
|