gpt4 book ai didi

c++ - 如何将重音字母 (wchar_t) 转换为 char?

转载 作者:行者123 更新时间:2023-11-30 05:19:13 27 4
gpt4 key购买 nike

我将应用程序从 Windows 移植到 Linux,但遇到了字符编码问题:我看到重音字母(例如 'é' 'à')被视为 wchar_t(g++ 为 4 个字节) 而在 Visual Studio 下,它们占用 1 个字节 (char)。我的单元测试失败了,因为在我的代码中我使用重音字母进行字符比较(因为在 Linux 中它们是多字节的)。

是否可以在 Linux 中将重音字母(如“û”)转换为 Windows 编码(1 字节),或者我应该重构我的代码并改用 std::wstring

最佳答案

如果 'é' 可以存储在 Windows 上的一个字符上,则您的应用程序可能是在没有 UNICODE 的情况下编译的,当然还有 Win 1252编码。

使用 Linux 上常用的 utf-8 编码,'é' should require 2 characters .这应该会导致编译器发出警告。如果你使用获得的字符,它只代表编码的一部分,这样一个字符一个字符的比较就没有意义了。

如果你想保留你的算法,使用字符串的单个字符,你最好使用 wchar_twstring (或者更便携的事件: char32_tu32string)。

如果你想了解更多关于 C++ 的字符编码和 unicode,我只能热烈推荐你这个优秀的视频 tutorial on unicode with C++来自詹姆斯·麦克内利斯。

关于c++ - 如何将重音字母 (wchar_t) 转换为 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com