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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cin и кириллица 
:(
    Опции темы
ForceKeeper
Дата 17.3.2010, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Консольное приложение, Студия 2008

Поток cin неправильно работает с кириллическими символами (передает строкам левые знаки), в то время как с файловым потоком ifstream никаких проблем (cout, кстате, тоже корректно работает). Разумеется в начале мейна есть setlocale (LC_ALL, ".1251"), в св-ах проекта пробовал все три варианта набора знаков. После вышеперечисленного я подумал, что работе cin'a что-то мешает в моем классе - все лишнее закомментировал, оставил один мейн с подключенным иостримом. Все равно cin чару не смог правильно передать русскую букву.
PM MAIL WWW   Вверх
bsa
Дата 17.3.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



попробуй использовать wcin/wcout вместо cin/cout. Соответственно, все русские тексты в коде программы префиксируй буквой L:
Код
std::wcout << L"some text" << std::endl;

PM   Вверх
ForceKeeper
Дата 17.3.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не помогло.
PM MAIL WWW   Вверх
toxx
Дата 17.3.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

CharToOem(in,out);


мб поможет
PM MAIL   Вверх
bsa
Дата 17.3.2010, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Код
#include <locale>
#include <iostream>
#include <string>

int main()
{
    std::setlocale(LC_ALL, "");
    std::wstring s;
    std::getline(std::wcin, s);
    std::wcout << s << std::endl;
}
Работает полностью правильно (при компиляции с помощью mingw32-g++-4.4.0).
PM   Вверх
ForceKeeper
Дата 20.3.2010, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



toxx
Код

CharToOem(in,out);

Запихал туда два динамических чара (с приведением к LPCWSTR и LPSTR) - данные из входного массива функция преобразовала, но неправильно.

bsa
вставил в начало мейна 
Код

std::setlocale(LC_ALL, "");
std::wstring s;
std::getline(std::wcin, s);
std::wcout << s << std::endl;

результат остался прежним.

В принципе я решил проблему написав руками фун-ю редактирующую мои чары. Но хочется все же узнать причину проблемы, так как раньше я вроде не испытывал проблем с вводом кириллического текста с клавиатуры. 
PM MAIL WWW   Вверх
JanryMayers
Дата 21.3.2010, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 11.6.2009
Где: Украина, г. Киев

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



setlocale(LC_ALL, "RUS");
PM MAIL   Вверх
bsa
Дата 21.3.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



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

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

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

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

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


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

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


 




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


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

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