0

まず、これは次の複製ではありません: Turn a C string with NULL bytes into a char arraychar * . が Unicode の場合、指定された答えは機能しないためです。

問題は、ASCII char * の代わりに UTF-8 でエンコードされた 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 * が ASCII ではなく UTF-8 になっていることだと思います

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 に答える