template <class charT, class traits, class Allocator>
bool operator()(const basic_string<charT, traits, Allocator>& s1,
const basic_string<charT, traits, Allocator>& s2) const; // (1) C++98
概要
照合ファセットを使用して、2つの文字列を比較する。
このメンバ関数により、localeオブジェクトは、文字列に対する二項述語(比較関数オブジェクト)として使用できる。std::sortなどのアルゴリズムに、ロケールに基いた文字列の照合順序を与える用途に使える。
戻り値
s1がs2より照合順序において小さい場合にtrue、そうでない場合にfalseを返す。
すなわち、以下と等価である:
return std::use_facet<std::collate<charT>>(*this).compare(
s1.data(), s1.data() + s1.size(),
s2.data(), s2.data() + s2.size()) < 0;
例
#include <algorithm>
#include <iostream>
#include <locale>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> v = {"charlie", "alice", "bob"};
// localeオブジェクトを比較関数として使い、ロケールに基いてソートする
std::sort(v.begin(), v.end(), std::locale::classic());
for (const std::string& s : v) {
std::cout << s << std::endl;
}
}
出力
alice
bob
charlie
バージョン
言語
- C++98