最終更新日時:
が更新

履歴 編集

function
<locale>

std::collate::transform

string_type transform(const charT* low, const charT* high) const; // (1) C++98

概要

文字の範囲を、照合順序での比較に使用できる文字列へ変換する。

戻り値

do_transform(low, high)

備考

変換後の文字列同士を辞書順で比較した結果は、変換前の文字列同士をcompare()で比較した結果と一致する。同じ文字列を何度も比較する場合、あらかじめ変換しておくことで比較のコストを下げられる。

#include <iostream>
#include <locale>
#include <string>

int main()
{
  const auto& col = std::use_facet<std::collate<char>>(std::locale::classic());

  const char a[] = "abc";
  const char b[] = "abd";

  std::string ka = col.transform(a, a + 3);
  std::string kb = col.transform(b, b + 3);

  // 変換後の文字列の辞書順比較は、compare()の結果と一致する
  std::cout << std::boolalpha << ((ka < kb) == (col.compare(a, a + 3, b, b + 3) < 0)) << std::endl;
}

出力

true

バージョン

言語

  • C++98

関連項目