NULL バイトで区切られた UNICODE C 文字列を区切る
質問
まず最初に、これは次のものの複製ではありません。 NULL バイトを含む C 文字列を char 配列に変換します。 なぜなら、与えられた答えは次の場合には機能しないからです。 char *
は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 になったことです。
解決
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ビットではなく可変幅です。ソース・データがchar*
としてUTF8でエンコードされた場合は、まずそれを仕事にwchar_t*
に変換する必要があります。
所属していません StackOverflow