![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| shaukote |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 13.2.2013 Репутация: нет Всего: нет |
Насколько я понял, там речь идёт несколько о другом. Простите, но я вообще не понял, к чему Вы это сказали. Мне не дают покоя два вопроса: 1) Почему не работает Ваш вариант с _setmode? Хотя вроде как должен корректно работать и на ввод и на вывод. 2) Как вообще может работать вариант Alexeis? Буду крайне признателен, если Вы сможете мне их разъяснить. |
|||
|
||||
| volatile |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Нет на ввод он действительно в этом виде не работает . (именно на ручной ввод с консоли) объясню почему меня это устраивает: я никгда не делаю приложений с ручным вводом с консоли. Если нужен диалог с пользователем, то имхо, нужно делать GUI! Удел консольных приложений работа с ком.строкой, перенаправленный ввод, вывод. и т.д. Вобщем если вам нужен ручной консольный ввод, то вам это не подойдет. Сорри что побеспокоил.
В студии этот код работает только в неконсольном приложении, и фактически выводит в кодировке cp866 перенаправьте в файл, увидите. (никакой мультиязычности т.е. нет) В нормальном юникодном приложении этот код выдает следующее:
Да, и кстати , вариант с _setmode нужно тоже проверять на настоящем юникодном приложении.. Это сообщение отредактировал(а) volatile - 8.4.2013, 23:39 |
||||||
|
|||||||
| shaukote |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 13.2.2013 Репутация: нет Всего: нет |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Подтверждаю, сегодня проверял на VS2005 . Файловый ввод/вывод UTF8 заработал только через бустовские локали, а вот UTF16 никак. Единственный рабочий способ через стандартные фасеты С++11 . Делают шаблонный фасет из wchar_t в wchar_t причем там по ходу реальное преобразование, поскольку юникодные потоки выгребают файл в буфер из char, точно также как это делают не юникодные. И если для UTF8 еще оправдана сборка символов с char-в, то для wchar_t сие преобразование выглядит как бред. Возможно, местные гуру С++ найдут в этом сакральный смысл, но мое ИМХО, что нехай ifstream рассматривает файл как char-ы и учиться извлекать из него строк как string так и wstring, а вот wifstream должен файл рассматривать как поток wchar_t и уже их транслировать во что угодно. P.S. удивительно как в билдере консолька юникодная. Вероятно, имеет место тотальная юникодизация видимо разработчики где-то удачно накосячили раз работает. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |