|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
Как задать локаль для потока?06.05.2013, 08:29. Показов 5684. Ответов 31
Метки нет (Все метки)
Задача прочитать UTF-8 без BOM из файла в std::wstring. Однобайтные символы читаются, а кириллица нет. Если поставить
0
|
|||||||||||
| 06.05.2013, 08:29 | |
|
Ответы с готовыми решениями:
31
Можно ли задать десятичный разделитель для потока? Можно ли задать ограничения для итератора потока ввода? Как сменить локаль? Хотя бы для вывода времени |
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 06.05.2013, 19:26 [ТС] | |
|
0
|
|
|
Ушел с форума
|
||
| 06.05.2013, 19:30 | ||
|
Получите строку в UTF-16 Little Endian, которую можно будет передать в wstring. Тащить для такой мелкой задачи Boost и ICU (особенно ввиду объема последней) - страшный overkill.
2
|
||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 08.05.2013, 09:41 [ТС] | |||
|
Дополнительное условие: приложение должно распространяться только в бинарниках, под другой лицензией и иметь закрытый исходный текст.
Добавлено через 1 минуту 2. Как перед чтением файла определить его размер? 3. Преобразование происходит в самом буфере? Добавлено через 1 минуту Дайте пожалуйста пример на эту функцию.
0
|
|||
|
Ушел с форума
|
||||
| 08.05.2013, 09:47 | ||||
|
1
|
||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 08.05.2013, 09:48 | ||||||
|
taras atavin, 1) char же (в терминах майкрософта LPCSTR).
2) http://en.cppreference.com/w/c... ream/seekg http://en.cppreference.com/w/c... ream/tellg
1
|
||||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 09.05.2013, 14:50 [ТС] | |
|
А где брать cbMultiByte и cchWideChar и какого размера создавать lpWideCharStr? http://msdn.microsoft.com/en-u... s.85).aspx.
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|||
| 09.05.2013, 20:05 | |||
|
0
|
|||
|
Ушел с форума
|
|
| 09.05.2013, 20:33 | |
|
MultiByteToWideChar умеет возвращать необходимый размер буфера, если ее "попросить",
указав в cchWideChar нулевое значение. Только учитывайте, что она, в зависимости от аргументов, может формировать выходной буфер без завершающего нуля.
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 09.05.2013, 21:03 [ТС] | |
|
Вообще не понял. Куда она будет писать результат преобразования, если память не выделялась? И как она вернёт размер буфера в байтах и в символах?
0
|
|
|
Ушел с форума
|
||
| 09.05.2013, 21:11 | ||
|
Если вкратце. Есть буфер, размер которого известен, с текстом в кодировке UTF-8.
Текст нужно перевести в UTF-16. Шаг 1 - определяем размер выходного буфера. Для этого вызываем MultiByteToWideChar, указывая ноль в cchWideChar. В описании этого параметра сказано: "If this value is 0, the function returns the required buffer size, in characters, including any terminating null character, and makes no use of the lpWideCharStr buffer". В случае успеха функция вернет необходимый размер выходного буфера, в символах. Шаг 2 - выделяем буфер необходимого размера (new/malloc/VirtualAlloc и т.п.). Шаг 3 - вызываем функцию MultiByteToWideChar повторно, теперь в последних параметрах указываем адрес и размер выходного буфера. Особое внимание уделите вот этому фрагменту из описания функции:
3
|
||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||
| 10.05.2013, 14:08 [ТС] | |||||||
|
Добавлено через 35 минут Повторно вызвал. Как теперь загнать эту строку в std::wstring? Можно написать
0
|
|||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 23.01.2020, 18:52 | ||
|
Если я правильно понял, то при нулевом cchWideChar, MultiByteToWideChar возвращает не размер бфера, то есть не размер байт, а кол-во преобразованных символов utf16, то есть размер буфера все таки определить не удается. Добавлено через 6 минут Или же я немного не прав и MultiByteToWideChar возвращает не кол-во символов, а кол-во двухбайтовых wchar_t байт, скорее наверное так.
0
|
||
| 23.01.2020, 18:52 | |
|
Как в Qt задать локаль типа "rus-rus" ? как задать имя потока из строки? Мьютексы-потоки: Как задать время выполнения потока Почему длинна потока это целое типа LONG, а смещение (offset) можно задать как INT
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|