Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ввод, вывод, кириллица 
V
    Опции темы
limelight
Дата 22.4.2010, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет




    Если подобная тема поднималась(скорее всего да) то дайте ссылку, т.к. я ответа на свой вопрос не нашел.

Среда MSVS 2005. 
Чтобы выводить текст в кириллице удобно использовать setlocale(). с этим все ясно.
но как быть когда требуется ввести строку состоящую из кириллического текста посредством 
cin ? Ну, т.е. cin>>stroka, где stroka будет "Привет".
Поясню - если мы пишем вначале программы setlocale() , то с выводом кириллицы посредством 
cout у нас проблемы нет, но есть проблемы с вводом посредством cin. Если setlocale() не использовать то тогда возникают проблемы с выводом кириллицы, но нет проблем с вводом.

Как раз и навсегда решить эту проблему?
Неужели нет стандартных приемов работы с русским(да и любым интернациональным) текстом?
PM MAIL ICQ   Вверх
toxx
Дата 22.4.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



часто задаваемые вопросы

Это сообщение отредактировал(а) toxx - 22.4.2010, 22:07
PM MAIL   Вверх
limelight
Дата 22.4.2010, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Возможно я не там смотрю...но , простите, где там про cin>> ? т.е. про ввод?
PM MAIL ICQ   Вверх
toxx
Дата 22.4.2010, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



limelight
простите, это я вас не так понял =)
где то была такая тема найти не могу никак...


Это сообщение отредактировал(а) toxx - 22.4.2010, 22:35
PM MAIL   Вверх
GoldFinch
Дата 23.4.2010, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



может поможет wcin?
PM MAIL ICQ   Вверх
limelight
Дата 23.4.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Мне нужно произвести ввод строки на русском при помощи getline(cin, name), т.к. эта функция позволяет включать в вводимую строку пробелы. wcin видимо здесь не подойдет..
PM MAIL ICQ   Вверх
GoldFinch
Дата 23.4.2010, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



limelight, getline работает и с wcin

Код

template<class charT, class traits, class Allocator>
  basic_istream<charT,traits>&
    getline (basic_istream<charT,traits>& is,
             basic_string<charT,traits,Allocator>& str );

PM MAIL ICQ   Вверх
djamshud
Дата 23.4.2010, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Есть мнение, что wcin не поможет ввиду того, что путаются две однобайтовые кодировки.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 23.4.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



если использовать wcin, то возможно на юникодных ОС будет читаться юникод
PM MAIL ICQ   Вверх
djamshud
Дата 23.4.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



На "юникодных ОС" юникод "читается" и обычным cin с char-ом. У топикстартера же проблема в том, что терминал отдает программе строку в кодировке А, а распечатывать хочет в кодировке В.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
limelight
Дата 23.4.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Можно набирать текст программы в каком-нибудь досовском редакоторе, а потом вставлять в студию, при этом не придется использовать setlocale,  но это не самый удобный способ...
интересно такие проблемы с текстом только в консольных программах?
PM MAIL ICQ   Вверх
GoldFinch
Дата 23.4.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



djamshud, под "юникодными ОС" я подразумевал семейство winNT (у limelight msvc2005, а значит ОС - винда).
есть подозрение что wcin будет использовать юникодные функции winapi для работы с консолью.

Добавлено через 13 минут и 24 секунды
действительно, CRT читает char'ы
PM MAIL ICQ   Вверх
ИванМ
Дата 24.4.2010, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



limelight, без OemToChar не обойтись, если нужно выводить прочитанную с консоли строку. С остальным локаль справляется.
PM MAIL   Вверх
limelight
Дата 25.4.2010, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



ИванМ,  да, я  с вами полностью согласен...
Посмотрел по другим форумам, поискал в интернете и пришел к выводу что здесь самым простым/спокойным будет использовать CharToOem и OemToChar.


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.