最終更新日時:
が更新

履歴 編集

function template
<locale>

std::locale::operator()

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などのアルゴリズムに、ロケールに基いた文字列の照合順序を与える用途に使える。

戻り値

s1s2より照合順序において小さい場合に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

関連項目