質問

まず最初に、これは次のものの複製ではありません。 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*に変換する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top