gpt4 book ai didi

c - swprintf 以\xffff unicode 字符失败

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:37 24 4
gpt4 key购买 nike

以下代码行与 Visual Studio 2013 一起运行:

wchar_t test[] = L"\xffff";
wchar_t buf[100];
int ret = swprintf(&buf[0], 100, L"%ls", &test[0]);

编译成功,但是swprintf输出这个字符失败(res为-1)。除了 \xffff 之外的任何其他字符都可以。这个字符可以在字符串的任何位置,swprintf 仍然失败。有什么问题?

最佳答案

MSVC/MSVCRT 有 16 位的 wchar_t,因此使用 0xffff 作为 WEOF 的值,从而阻止它成为有效字符并且必须在这样使用时导致错误。这并不真正排除使用 Unicode 字符,因为 U+FFFF 在 Unicode 中是一个非字符,但它仍然是不受欢迎的行为因为 UTF 应该处理所有 Unicode 标量值,而不仅仅是字符。

唯一的“修复”是使用 32 位 wchar_t 的正确实现(我认为 cygwin 应该可以在 Windows 上工作,但我不确定;否则,任何类 unix 系统)。

关于c - swprintf 以\xffff unicode 字符失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188727/

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