gpt4 book ai didi

c - 分隔空字节分隔的 UNICODE C 字符串

转载 作者:行者123 更新时间:2023-11-30 14:30:51 26 4
gpt4 key购买 nike

首先,这不是 Turn a C string with NULL bytes into a char array 的重复项,因为当 char * 是 Unicode 时,给定的答案不起作用。

我认为问题在于,因为我尝试使用 UTF-8 编码的 char * 而不是 ASCII char *,并且每个字符的长度不同,因此,这不起作用:

char *Buffer;             // your null-separated strings
char *Current; // Pointer to the current string
// [...]
for (Current = Buffer; *Current; Current += strlen(Current) + 1)
printf("GetOpenFileName returned: %s\n", Current);

有人有适用于 Unicode 字符串的类似解决方案吗?

我已经为此苦苦思索了 4 个多小时了。 C 不同意我的观点。

编辑:认为问题在于 char * 现在是 UTF-8 而不是 ASCII。

最佳答案

不要使用char*。使用wchar_t*及相关函数

wchar_t *Buffer;             // your null-separated strings
wchar_t *Current; // Pointer to the current string
// [...]
for (Current = Buffer; *Current; Current += wstrlen(Current) + 1)
wprintf(L"GetOpenFileName returned: %s\n", Current);

顺便说一句,wchar_t 在 Windows 上是 16 位,不是可变宽度。如果您的源数据采用 UTF8 编码为 char*,则应首先将其转换为 wchar_t* 才能使用。

关于c - 分隔空字节分隔的 UNICODE C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615738/

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