![]() |
|
Модераторы: bsa |
![]()
|
|
| limelight |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 19.10.2009 Репутация: нет Всего: нет |
Если подобная тема поднималась(скорее всего да) то дайте ссылку, т.к. я ответа на свой вопрос не нашел. Среда MSVS 2005. Чтобы выводить текст в кириллице удобно использовать setlocale(). с этим все ясно. но как быть когда требуется ввести строку состоящую из кириллического текста посредством cin ? Ну, т.е. cin>>stroka, где stroka будет "Привет". Поясню - если мы пишем вначале программы setlocale() , то с выводом кириллицы посредством cout у нас проблемы нет, но есть проблемы с вводом посредством cin. Если setlocale() не использовать то тогда возникают проблемы с выводом кириллицы, но нет проблем с вводом. Как раз и навсегда решить эту проблему? Неужели нет стандартных приемов работы с русским(да и любым интернациональным) текстом? |
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
||||
|
||||
| limelight |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 19.10.2009 Репутация: нет Всего: нет |
Возможно я не там смотрю...но , простите, где там про cin>> ? т.е. про ввод?
|
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
limelight
простите, это я вас не так понял =) где то была такая тема найти не могу никак... Это сообщение отредактировал(а) toxx - 22.4.2010, 22:35 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
может поможет wcin?
|
|||
|
||||
| limelight |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 19.10.2009 Репутация: нет Всего: нет |
Мне нужно произвести ввод строки на русском при помощи getline(cin, name), т.к. эта функция позволяет включать в вводимую строку пробелы. wcin видимо здесь не подойдет..
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
limelight, getline работает и с wcin
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Есть мнение, что wcin не поможет ввиду того, что путаются две однобайтовые кодировки.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
если использовать wcin, то возможно на юникодных ОС будет читаться юникод
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
На "юникодных ОС" юникод "читается" и обычным cin с char-ом. У топикстартера же проблема в том, что терминал отдает программе строку в кодировке А, а распечатывать хочет в кодировке В.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| limelight |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 19.10.2009 Репутация: нет Всего: нет |
Можно набирать текст программы в каком-нибудь досовском редакоторе, а потом вставлять в студию, при этом не придется использовать setlocale, но это не самый удобный способ...
интересно такие проблемы с текстом только в консольных программах? |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
djamshud, под "юникодными ОС" я подразумевал семейство winNT (у limelight msvc2005, а значит ОС - винда).
есть подозрение что wcin будет использовать юникодные функции winapi для работы с консолью. Добавлено через 13 минут и 24 секунды действительно, CRT читает char'ы |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
limelight, без OemToChar не обойтись, если нужно выводить прочитанную с консоли строку. С остальным локаль справляется.
|
|||
|
||||
| limelight |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 19.10.2009 Репутация: нет Всего: нет |
ИванМ, да, я с вами полностью согласен...
Посмотрел по другим форумам, поискал в интернете и пришел к выводу что здесь самым простым/спокойным будет использовать CharToOem и OemToChar. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |