定义local对象
#include <iostream>
#include <locale>
class ChineseBoolName : public std::numpunct_byname<char> {
public:
ChineseBoolName(const std::string & name) : std::numpunct_byname<char>(name) {}
protected:
virtual std::string do_truename() const override { return "真"; }
virtual std::string do_falsename() const override { return "假"; }
};
int main() {
std::locale myLoc(std::locale(""), new ChineseBoolName("")); // 产生一个新的local
std::cout.imbue(myLoc);
std::cout << std::boolalpha << true << std::endl;
return system("pause");
}
GBK to UTF-8
尽量用当前库提供的方式。
根据拼音排序中文
int main() {
std::vector<std::string> v;
v.push_back("一");
v.push_back("二");
v.push_back("三");
v.push_back("四");
v.push_back("五");
std::sort(v.begin(), v.end(), std::locale("")); // 本地化排序--按照拼音
for (auto & i : v) {
std::cout << i << std::endl;
}
return system("pause");
}
网友评论