Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2012, 22:15   #1
Dima-War
Форумчанин
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию Русский язык

В программе следующая проблема. При вводе русских букв возвращаются непонятные символы (при вводе английских все нормально). Можно ли как нибудь это исправить?

Код:
#include <iostream>
#include <clocale>
#include <conio.h>
#include <cstdio>

using namespace std;

int main()
{
	setlocale(LC_CTYPE,"Russian");
	char str[64];
	cout << "Введите что-нибудь: ";
	gets(str);
	cout << "Вы ввели: ";
	cout << str;
	_getch();
	return 0;
}
Dima-War вне форума Ответить с цитированием
Старый 05.11.2012, 22:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно. Используй wchar_t. Всмысле переменные для юникода.
I'm learning to live...

Последний раз редактировалось Stilet; 05.11.2012 в 22:41.
Stilet вне форума Ответить с цитированием
Старый 05.11.2012, 22:44   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Похоже, это основная проблема консольных приложений.
Что сделать с вводом русских символов?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.11.2012, 22:44   #4
Dima-War
Форумчанин
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно. Используй wchar_t. Всмысле переменные для юникода.
Не совсем понял, что ты написал. Можешь, пожалуйста, привести исходный код с исправлением.


Цитата:
Сообщение от BDA Посмотреть сообщение
Похоже, это основная проблема консольных приложений.
Что сделать с вводом русских символов?
Не помог ни один вариант, описанный в данной теме.

Последний раз редактировалось Dima-War; 05.11.2012 в 22:50.
Dima-War вне форума Ответить с цитированием
Старый 05.11.2012, 22:59   #5
Murashov
Форумчанин
 
Аватар для Murashov
 
Регистрация: 30.10.2012
Сообщений: 121
По умолчанию

#include <clocale>
...
setlocale(LC_ALL,"Russian");

если это не работает, то смотри настройки ос, видимо ос криво настроена.

и попробуй через printf("");, а не сиаут
Murashov вне форума Ответить с цитированием
Старый 05.11.2012, 23:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста:
Код:
// аа.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <locale>


using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "Russian");
    wcout.imbue(locale(".1251"));
    wcin.imbue(locale(".866"));
    wchar_t str[64]; //или wstring name;
    cout << "Введите что-нибудь: ";
    wcin >> str;
    wcout << "Вы ввели: ";
	wcin.ignore();
	wcin.get();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2012, 06:13   #7
Suby
Пользователь
 
Аватар для Suby
 
Регистрация: 03.11.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Пожалуйста:
Код:
#include "stdafx.h"
Cannot open include file: 'сstdafx': No such file or directory

И, кстати, как быть если нужно вводить и русские и английские буквы? А то тут получается либо одно, либо другое.
Suby вне форума Ответить с цитированием
Старый 06.11.2012, 09:43   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Cannot open include file: 'сstdafx': No such file or directory
Не надо бездумно переименовывать инклуды. Там с h на конце.
p51x вне форума Ответить с цитированием
Старый 06.11.2012, 11:19   #9
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Код:
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
}
setlocale убираем.
rmv240899 вне форума Ответить с цитированием
Старый 06.11.2012, 11:23   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А то тут получается либо одно, либо другое.
А у меня все ок. И то и другое вводится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ на русский язык fkorto Общие вопросы C/C++ 6 29.04.2010 15:12
Русский язык Sanek_ntsk Общие вопросы C/C++ 9 06.03.2008 16:50
Русский язык Elefanter Свободное общение 14 22.02.2008 16:23
Русский язык [Smarik] Паскаль, Turbo Pascal, PascalABC.NET 7 01.02.2008 22:58
РУССКИЙ ЯЗЫК vicdon Паскаль, Turbo Pascal, PascalABC.NET 3 19.11.2007 14:34