Разделяющая пустую строку строка UNICODE C - PullRequest
0 голосов
/ 11 апреля 2010

Во-первых, это НЕ дубликат: Превратите строку C с байтами NULL в массив символов , потому что данный ответ не работает, когда char * в Unicode. 1004 *

Я думаю, что проблема в том, что, поскольку я пытаюсь использовать кодированные в 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 часов. С не согласен со мной.

РЕДАКТИРОВАТЬ: Я думаю , что проблема в том, что символ * теперь UTF-8 вместо ASCII.

1 Ответ

2 голосов
/ 11 апреля 2010

Не используйте 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 - это 16 бит в Windows, а не переменная ширина. Если ваши исходные данные имеют кодировку UTF8 как char*, вы должны сначала преобразовать их в wchar_t* для работы с ними.

...