Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
homiCID
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 6
#1

Ввод/вывод с использование русского языка - C++

10.02.2013, 18:34. Просмотров 11956. Ответов 13
Метки нет (Все метки)

Мне нужно ввести с клавиатуры строку на русском языке (например:"Я живу в России") и вывести её также. Как это сделать? Я сколько не пытался - не получается. Читал на форумах, но так и не нашел решения. Заранее спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 18:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод/вывод с использование русского языка (C++):

Использование русского языка в DevC++ - C++
Пишу программу на С++ (недавно начал изучение). Весь код есть, компиляция проходит успешно, запускаю - вместо букв, "каракули"....

Вывод русского языка в консоли - C++
Доброго времени суток, коллеги! Столкнулся с проблемой при написании простенькой программы шифрования/дешифрования текста: после...

Подключение русского языка - C++
Недавно нашла,как сделать так,чтобы на экране отображались на русском языке не только фразы из cout<<, но и которые вводятся с...

Ошибка с подключением русского языка - C++
А так же, почему то выделяет красным число "pi" #include <stdio.h> #include <math.h> #include <windows.h> char bufRus; char*...

Компилятор с поддержкой русского языка - C++
Использую MS Visual с++ 6.0, но он не поддерживает русского языка. Если в коде есть русские буквы - он заменяет их какими то непонятными...

Запрограммировать правило русского языка - C++
Правило написания букв И - Е в корнях с чередованием (-бер-, -бир(а)-, -дер-, -дир(а)- и т.д.). Например, собирать, соберет, сочетание.

13
Croessmah
Пришел
Эксперт CЭксперт С++
13771 / 7852 / 894
Регистрация: 27.09.2012
Сообщений: 19,267
Записей в блоге: 3
Завершенные тесты: 1
10.02.2013, 18:38 #2
Русские шрифты в консоли

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
int main (){
    std::string str;
    std::cout<<"enter string: ";
    std::getline(std::cin,str);
    std::cout<<str<<std::endl;
    return 0;
}
1
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
10.02.2013, 19:00 #3
C++
1
2
3
char ch;
cin >>ch;
cout <<ch;
Добавлено через 21 минуту
Цитата Сообщение от Kins Посмотреть сообщение
C++
1
2
3
char ch;
cin >>ch;
cout <<ch;
сорри, фигню сморозил=)
0
homiCID
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 6
10.02.2013, 19:19  [ТС] #4
я это видел уже. попробуй напиши программу, как я описал. буду признателен, если сюда скинешь.

Добавлено через 8 минут
ааааааа все понял. Спасибо))
0
MegaMozg
45 / 45 / 1
Регистрация: 19.12.2008
Сообщений: 110
10.02.2013, 19:21 #5
для работы с русским языком в консоли нужно установить соответствующую "локаль"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <locale>
 
using namespace std;
 
int main()
{
 
    // устанвливаем русскую локаль для консоли
    setlocale(LC_ALL,"Russian");
 
 
    return 0;
}
2
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
10.02.2013, 19:30 #6
можно просто так setlocale(LC_ALL,"")
2
NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
10.02.2013, 19:34 #7
Как вариант небольшая функция...не помню где взял...но хорошо работает.
Архив содержит cpp и h файлы функций:
C++
1
2
string ToDosStr(string input);
string ToWinStr(string input);
Пример использования:
C++
1
cout << ToDosStr("Введите число Y:");
1
Вложения
Тип файла: rar 1.rar (718 байт, 51 просмотров)
Avazart
Эксперт С++
7423 / 5513 / 316
Регистрация: 10.12.2010
Сообщений: 24,601
Записей в блоге: 17
20.02.2013, 02:09 #8
Цитата Сообщение от Kins Посмотреть сообщение
можно просто так setlocale(LC_ALL,"")
Дело не в локали а кодировке и шрифте консоли.
В исходниках Windows cp1251 а в консоли cp866. Поэтому нужно коде менять кодировку
system(chcp 1251);
А в самой консоли в свойствах поставить шрифт Lucida Console
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.02.2013, 02:16 #9
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console
1
palva
2925 / 2059 / 329
Регистрация: 08.06.2007
Сообщений: 7,554
Записей в блоге: 4
20.02.2013, 03:35 #10
По-моему, то, что вы введете с консоли по-русски, будет отображено при выводе тоже русскими буквами.
Конечно, для этого нужно, чтобы в операционной системе был установлен русский язык.
Никаких ухищрений не нужно. Переключайте раскладку и вводите. Пример программы приведен в самом первом ответе.
1
Avazart
Эксперт С++
7423 / 5513 / 316
Регистрация: 10.12.2010
Сообщений: 24,601
Записей в блоге: 17
20.02.2013, 03:58 #11
Блин да я же уже сказал в винде разные кодировки .... консоль использует OEM - кодировку, в то время как блокноты и редакторы кода cp1251
0
sativan
2 / 2 / 0
Регистрация: 04.01.2017
Сообщений: 49
22.02.2017, 21:01 #12
спасибо брат выручил меня!
0
svetogor
22 / 22 / 5
Регистрация: 01.02.2017
Сообщений: 54
Записей в блоге: 1
22.02.2017, 22:45 #13
Цитата Сообщение от homiCID Посмотреть сообщение
Мне нужно ввести с клавиатуры строку на русском языке
Очень правильное намерение. Целиком и полностью согласен, всё должно быть по-русски, и ввод и вывод. Попробуй вот эту функцию в Wind'е:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// устанавливает кириллицу в консоли
 
void SetConsole(const wchar_t *pszTitle = NULL, BOOL bFullScreen = FALSE)
{
    CONSOLE_FONT_INFOEX font;
    HANDLE hStdOut = NULL;
 
    // кодовая страница
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    // шрифт
    font.cbSize = sizeof font;
    font.nFont = 1;
    font.dwFontSize = { 9, 18 };
    font.FontFamily = 0 | FF_DONTCARE & ~TMPF_FIXED_PITCH;
    font.FontWeight = FW_NORMAL;
    wcscpy_s(font.FaceName, LF_FACESIZE, L"Lucida Console");
 
    // установка шрифта
    hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    if(!SetCurrentConsoleFontEx(hStdOut, FALSE, &font))
        printf("SetConsole: ошибка! Невозможно установить шрифт: %s.\n", FormatErrorMessage(GetLastError()).c_str());
 
    // заголовок и полный экран...
    if(pszTitle)
        SetConsoleTitleW(pszTitle);
    if (bFullScreen)
//      SendMessage(GetConsoleWindow(), WM_SYSCOMMAND, SC_MAXIMIZE, 0);
        ShowWindow(GetConsoleWindow(), SW_MAXIMIZE);
}
Возьми вот этот проект VS-2015. Если у тебя более ранняя версия, скопируй все *.h и *.cpp файлы в свой проект. Используй cons.cpp в других своих проектах.
1
valery1954
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 7
17.10.2017, 00:24 #14
Русские буквы вывод на Windows XP



код:
#include <windows.h>
#include <iostream>

char bufrus[256];
char * rus(const char* text) {
CharToOem(text, bufrus);
return bufrus;
}
int main()
{
setlocale(LC_CTYPE, "rus");
std:: cout<<rus("Великий могучий русский язык\n");
std:: cout<<"\nВеликий могучий русский язык\n";
std::cout << "Hello world!" ;
system("pause");
return 0;
}

Добавлено через 15 секунд
Русские буквы вывод на Windows XP



код:
#include <windows.h>
#include <iostream>

char bufrus[256];
char * rus(const char* text) {
CharToOem(text, bufrus);
return bufrus;
}
int main()
{
setlocale(LC_CTYPE, "rus");
std:: cout<<rus("Великий могучий русский язык\n");
std:: cout<<"\nВеликий могучий русский язык\n";
std::cout << "Hello world!" ;
system("pause");
return 0;
}
0
17.10.2017, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2017, 00:24
Привет! Вот еще темы с ответами:

Неверное считывание символов русского языка - C++
Visual Studio 2013. При считывании русских символов всеми возможными средствами (cin, scanf, getch и др.) считывается неверный код, который...

Иероглифы с включенной в код функцией русского языка - C++
Добрый день, я столкнулся с проблемой, когда в отладке выдает иероглифы даже при ом условии, что в начале функции mailn объявлен русский...

Поддержка русского языка в Embarcadero RAD Studio XE3 на Си++ - C++
Здравствуйте. Подскажите пожалуйста как включить полноценную поддержку русского языка в Embarcadero RAD Studio XE3? При вводе и выводе...

В консоли вместо русского языка выводятся вопросительные знаки - C++
Столкнулся с такой проблемой. В консоли вместо русского языка выводятся вопросительные знаки (???? ?? ??). setlocale(LC_ALL,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru