string_type transform(const charT* low, const charT* high) const; // (1) C++98
概要
文字の範囲を、照合順序での比較に使用できる文字列へ変換する。
戻り値
備考
変換後の文字列同士を辞書順で比較した結果は、変換前の文字列同士を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