我正在尝试对非 ASCII 字符应用较低的函数。以下代码在Linux(Ubuntu)环境中不起作用,但在Windows中有效。
int main() {
std:string data="ŽŠ";
std::transform(data.begin(), data.end(), data.begin(), ::tolower);
cout<< data << endl;
return 0;
}
我尝试安装语言包但没有成功。有人可以帮助我在这段代码中缺少什么吗?
::tolower()
依赖于 C 库中当前的区域设置。默认"C"
locale 仅保证处理 ASCII 字符。 Microsoft 可能会使用与用户当前区域设置相匹配的不同默认区域设置。这可以解释为什么该代码能够在 Windows 上运行。
Use ::setlocale() http://en.cppreference.com/w/c/locale/setlocale设置所需的区域设置::tolower()
使用。否则,请使用可移植的 Unicode 库,例如ICU http://site.icu-project.org.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)