我试图在非ASCII字符上应用较低的功能.以下代码在Linux(Ubuntu)环境中不起作用,但适用于Windows.
int main() {
std:string data="ŽŠ";
std::transform(data.begin(), data.end(), data.begin(), ::tolower);
cout<< data << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试安装语言包但没有工作.有人可以帮我解释这段代码中缺少的是什么吗?
::tolower()依赖于C库中设置的当前语言环境.默认"C"语言环境仅保证处理ASCII字符.Microsoft可能使用与用户当前区域设置匹配的其他默认区域设置.这可以解释为什么代码能够在Windows上运行.
使用::setlocale()设定所需语言环境::tolower()中使用.否则,请使用可移植的Unicode库,例如ICU.
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |