★21.国际化支持

定义local对象

#include 
#include 

class ChineseBoolName : public std::numpunct_byname {
public:
    ChineseBoolName(const std::string & name) : std::numpunct_byname(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 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");
}

你可能感兴趣的:(★21.国际化支持)