| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > ввод, вывод, кириллица |
| Автор: limelight 22.4.2010, 22:03 |
Если подобная тема поднималась(скорее всего да) то дайте ссылку, т.к. я ответа на свой вопрос не нашел. Среда MSVS 2005. Чтобы выводить текст в кириллице удобно использовать setlocale(). с этим все ясно. но как быть когда требуется ввести строку состоящую из кириллического текста посредством cin ? Ну, т.е. cin>>stroka, где stroka будет "Привет". Поясню - если мы пишем вначале программы setlocale() , то с выводом кириллицы посредством cout у нас проблемы нет, но есть проблемы с вводом посредством cin. Если setlocale() не использовать то тогда возникают проблемы с выводом кириллицы, но нет проблем с вводом. Как раз и навсегда решить эту проблему? Неужели нет стандартных приемов работы с русским(да и любым интернациональным) текстом? |
| Автор: toxx 22.4.2010, 22:07 |
| http://forum.vingrad.ru/forum/topic-269794/kw-faq-c++.html# |
| Автор: limelight 22.4.2010, 22:10 |
| Возможно я не там смотрю...но , простите, где там про cin>> ? т.е. про ввод? |
| Автор: toxx 22.4.2010, 22:26 |
| limelight простите, это я вас не так понял =) где то была такая тема найти не могу никак... |
| Автор: GoldFinch 23.4.2010, 08:07 |
| может поможет wcin? |
| Автор: limelight 23.4.2010, 12:10 |
| Мне нужно произвести ввод строки на русском при помощи getline(cin, name), т.к. эта функция позволяет включать в вводимую строку пробелы. wcin видимо здесь не подойдет.. |
| Автор: GoldFinch 23.4.2010, 13:40 | ||
limelight, getline работает и с wcin
|
| Автор: djamshud 23.4.2010, 13:45 |
| Есть мнение, что wcin не поможет ввиду того, что путаются две однобайтовые кодировки. |
| Автор: GoldFinch 23.4.2010, 14:17 |
| если использовать wcin, то возможно на юникодных ОС будет читаться юникод |
| Автор: djamshud 23.4.2010, 14:28 |
| На "юникодных ОС" юникод "читается" и обычным cin с char-ом. У топикстартера же проблема в том, что терминал отдает программе строку в кодировке А, а распечатывать хочет в кодировке В. |
| Автор: limelight 23.4.2010, 14:48 |
| Можно набирать текст программы в каком-нибудь досовском редакоторе, а потом вставлять в студию, при этом не придется использовать setlocale, но это не самый удобный способ... интересно такие проблемы с текстом только в консольных программах? |
| Автор: GoldFinch 23.4.2010, 15:05 |
| djamshud, под "юникодными ОС" я подразумевал семейство winNT (у limelight msvc2005, а значит ОС - винда). есть подозрение что wcin будет использовать юникодные функции winapi для работы с консолью. Добавлено через 13 минут и 24 секунды действительно, CRT читает char'ы |
| Автор: ИванМ 24.4.2010, 19:58 |
| limelight, без OemToChar не обойтись, если нужно выводить прочитанную с консоли строку. С остальным локаль справляется. |
| Автор: limelight 25.4.2010, 09:50 |
| ИванМ, да, я с вами полностью согласен... Посмотрел по другим форумам, поискал в интернете и пришел к выводу что здесь самым простым/спокойным будет использовать CharToOem и OemToChar. |