如何对非ascii字符

时间:2016-06-13 21:40:17

标签: c++ ubuntu

我正在尝试对非ASCII字符应用较低的功能。以下代码在Linux(Ubuntu)环境中不起作用,但适用于Windows。

int main() {
        std:string data="ŽŠ";
        std::transform(data.begin(), data.end(), data.begin(), ::tolower);
        cout<< data << endl;
        return 0;
}

我尝试安装语言包但没有工作。有人可以帮助我在这段代码中缺少什么吗?

1 个答案:

答案 0 :(得分:5)

::tolower()依赖于C库中设置的当前语言环境。默认"C"语言环境仅保证处理ASCII字符。 Microsoft可能使用与用户当前区域设置匹配的其他默认区域设置。这可以解释为什么代码能够在Windows上运行。

使用::setlocale()设置要使用的::tolower()所需的区域设置。否则,请使用可移植的Unicode库,例如ICU