boost :: format и wchar_t - PullRequest
       20

boost :: format и wchar_t

3 голосов
/ 22 февраля 2012

Я пытаюсь отформатировать строку с помощью boost:

wchar_t *msg;
// fill msg
boost::format("Error: %s") % msg).str()

То, что я получаю вместо содержимого msg, это адрес msg в шестнадцатеричном формате.

Нет успеха с такими вещами:

boost::format("Error: %s") % new std::wstring(msg)
boost::format("Error: %1%") % msg

Примечание: хотя я думаю, что это не имеет значения, но способ заполнения сообщения:

FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | 40, NULL, GetLastError(), MAKELANGID(0, SUBLANG_ENGLISH_US), (LPTSTR) &msg, 512, NULL);

и Visual Studio Watch правильно отображает содержимое сообщения.

Ответы [ 2 ]

8 голосов
/ 22 февраля 2012

Попробуйте использовать boost::wformat для работы с wchar_t строками.

0 голосов
/ 22 февраля 2012

Вы можете использовать boost::wformat, как предлагает wilx. Или вы можете изменить строку формата на "%ls" (где l - это буква ell , маленький L.) Это модифицирует "%s" для ожидания строк широких символов.

...