0

首先,这不是以下内容的副本:Turn a C string with NULL bytes into a char arraychar * ,因为当's 是 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 字符串?

我已经在这个问题上敲了四个多小时了。C不同意我的看法。

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

4

1 回答 1

2

不要使用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*为使用它。

于 2010-04-11T01:43:44.127 回答