名前空間
変種
操作

std::strcoll

From cppreference.com
< cpp‎ | string‎ | byte
 
 
 
 
ヘッダー <cstring> で定義
int strcoll( const char* lhs, const char* rhs );

LC_COLLATE カテゴリによって定義される現在のロケールに従って、ヌル終端バイト文字列を2つ比較します。

目次

[編集] パラメータ

lhs, rhs - 比較するヌル終端バイト文字列へのポインタ

[編集] 戻り値

  • lhsrhs より「小さい」(先行する)場合、負の値。
  • 0 lhsrhs と「等しい」場合。
  • lhsrhs より「大きい」(後続する)場合、正の値。

[編集] 注釈

照合順序は辞書順です。つまり、アルファベットにおける文字の位置(その「同等クラス」)が、大文字・小文字やバリアントよりも優先されます。同等クラス内では、小文字は対応する大文字よりも前に照合され、アクセント記号付き文字にはロケール固有の順序が適用される場合があります。一部のロケールでは、文字のグループが単一の「照合単位」として比較されます。たとえば、チェコ語の "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> の仮想保護メンバー関数) [編集]
strcmpstrcoll と同じ結果を生成するように文字列を変換する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)