小编Rai*_*ner的帖子

使用boost locale进行字符串转换:Windows和Linux上的不同行为

这是我的示例代码:

#pragma execution_character_set("utf-8")

#include <boost/locale.hpp>
#include <boost/algorithm/string/case_conv.hpp>
#include <iostream>

int main()
{
    std::locale loc = boost::locale::generator().generate("");
    std::locale::global(loc);

#ifdef MSVC
    std::cout << boost::locale::conv::from_utf("grüßen vs ", "ISO8859-15");
    std::cout << boost::locale::conv::from_utf(boost::locale::to_upper("grüßen"), "ISO8859-15") << std::endl;
    std::cout << boost::locale::conv::from_utf(boost::locale::fold_case("grüßen"), "ISO8859-15") << std::endl;
    std::cout << boost::locale::conv::from_utf(boost::locale::normalize("grüßen", boost::locale::norm_nfd), "ISO8859-15") << std::endl;
#else
    std::cout << "grüßen vs ";
    std::cout << boost::locale::to_upper("grüßen") << std::endl;
    std::cout << boost::locale::fold_case("grüßen") << std::endl;
    std::cout << boost::locale::normalize("grüßen", boost::locale::norm_nfd) << std::endl;
#endif

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Windows 7上的输出是:

grüßen vs GRÜßEN
grüßen
grußen
Run Code Online (Sandbox Code Playgroud)

Linux上的输出(openSuSE 12.3)是:

grüßen …
Run Code Online (Sandbox Code Playgroud)

c++ linux windows boost locale

9
推荐指数
1
解决办法
2486
查看次数

标签 统计

boost ×1

c++ ×1

linux ×1

locale ×1

windows ×1