![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Если я плохо искал, и это уже где-то и когда-то было - просьба не пинать
Под влиянием регулярно возникающих на форумах вопросов а-ля "у меня на C++ в консоли вместо кириллицы выводятся кракозябы", взялся за написание велосипеда, исправляющего (?) ситуацию для iostreams. Решение очевидно: codecvt facet. Просьба посмотреть и указать потенциальные грабли.
Использование тривиально, например:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| Fighter |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
У меня одни ошибки выдает.
|
|||
|
||||
| ABPOPA |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 30.3.2005 Репутация: нет Всего: нет |
мне почему-то так легче
пример прост
|
||||
|
|||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
А может проще сразу исходники в кодировке DOS866 набирать? А то на каждый вывод вызывать функцию конвертирования - накладно что-то получается...
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
При компиляции или при выполнении? Какой компилятор, ОС?
А плюсовые потоки сами по себе небыстрая вещь Мне просто захотелось показать идеологически правильное (наверное) решение проблемы. Не зря же в стандарт ввели эту фичу -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| AISIN |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
У меня Visual копирую твой листинг. Компилирую одни ошибки! Набираю все тоже самое руками и все без ошибок! --------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
||||
|
|||||
| Fighter |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
А ну теперь я понял фишку. Я пока что не набирал, но надеюсь, что будет работать. Дело в том, что кодировки тут и в Visual C++ различаются (скорее всего коды символов разные). Вот он и пишет что там какой-то символ неизвестен (если мне память не изменяет). В общем, на досуге все в ручную перепишу и попробую. P.S. Наконец-то можно спокойно набирать в консоле программы (а не юзать для таких целей Turbo C++). |
||||
|
|||||
| chaos |
|
||||||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
а мне такое решение нравится))
|
||||||||
|
|||||||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Я вообще в фаре все для консоли делаю... а вообще надо просто в настройках студии подключить нужную кодировку для записи и просто менять её, когда надо писать в win.
|
|||
|
||||
| Fighter |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Поподробнее |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Буду очень рад, если это кому-нибудь поможет Кстати, для повышения быстродействия можно переопределить еще один метод базового класса:
Я понадеялся на дефолтную реализацию, а она возвращает 1 - и перекодировка идет посимвольно. Вместо 1024 здесь можно определить любую достаточно большую константу - хоть INT_MAX. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
А какое идеологически верное решение для CRT? Если программа пишется на "чистом" Си, например?
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |