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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
#1

Русский язык в консоли - C++

21.08.2014, 16:18. Просмотров 1905. Ответов 14
Метки нет (Все метки)

Здравствуйте. Чего-то не разберусь с русским языком.

C++
1
setlocale(LC_ALL,"RUSSIAN");
и
C++
1
setlocale(LC_ALL,"1251");
- классно.

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

Русский язык в консоли - C++
При вводе русских букв в консоль (cin >> a), функция просто не работает, завершается return, я попробовал использовать SetConsoleCP(1251);...

Русский язык в консоли - C++
Допустим вот код cout << "Помогите пожалуйста!"; Пробовал и setlocale и <windows.h>. Проблема в том что вместо русских букв он...

Русский язык в консоли - C++
Как сделать запись в файл и чтение с него русскими буквами а не иероглифами?

Русский язык в консоли - C++
Скажу сразу, что закрепленную тему я прочитал, но не очень понял, как это реализовать. Вот код, текст выводится неизвестными символами....

Русский язык в консоли - C++
Здравствуйте! Перепробовал все способы в соответствующей теме - ничего не работает. Пишу в QtCreator(без использования Qt как...

Русский язык в консоли - C++
Здравствуйте.У меня следующая проблема:Когда я записываю русский текст в текстовый файл в файле появляется абра-кадабра какая-то.Как...

14
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
21.08.2014, 16:33 #2
Цитата Сообщение от Retyrn0 Посмотреть сообщение
или есть более универсальные способы?
Выучить английский язык например.
0
Aleksandr644
2 / 2 / 0
Регистрация: 11.08.2014
Сообщений: 11
21.08.2014, 16:45 #3
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
прочитай про них... правда на XP у меня они не работают...
1
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
21.08.2014, 17:32 #4
Retyrn0, тут смотрели? Ещё есть поиск по форуму, там вот что дают. Ну и гугл модно тож.
0
ranebull
524 / 357 / 54
Регистрация: 23.06.2013
Сообщений: 1,182
Записей в блоге: 6
21.08.2014, 17:37 #5
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Здравствуйте. Чего-то не разберусь с русским языком.
Напишите IDE, в которой работаете и прикрепите код программы.
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.08.2014, 20:25  [ТС] #6
Цитата Сообщение от Ryuk Посмотреть сообщение
Выучить английский язык например.
Спасибо. А если я пишу базу данных, мне всех пользователей нужно заставлять писать исключительно на английском языке всё? Обожаю такие ответы)

Добавлено через 3 минуты
Цитата Сообщение от gru74ik Посмотреть сообщение
тут смотрели?
"Извините, нет совпадений. Попробуйте указать другие ключевые слова."
Цитата Сообщение от gru74ik Посмотреть сообщение
вот что дают
Я пробовал множество способов, но во всех темах вопрос по языку ввода - с этим проблем нет, по языку файла - тоже не проблема, а работа и с тем и другим на русском не работают. Один способ помогает только с вводом-выводом, второй только с файлами, а чтобы и то и другое работало одновременно не выходит.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
21.08.2014, 20:29 #7

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
там вот что дают
Что дают? Предупреждение о нарушении правил за отсыл в поиск?


Цитата Сообщение от Retyrn0 Посмотреть сообщение
setlocale(LC_ALL,"RUSSIAN");
а в консоли меняли шрифт? И вообще, хоть бы сообщили ОС, редактор
1
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.08.2014, 20:32  [ТС] #8
Цитата Сообщение от ranebull Посмотреть сообщение
Напишите IDE, в которой работаете и прикрепите код программы.
VS2008 С++.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
void main()
{
//  SetConsoleCP("1251");
//  SetConsoleOutputCP("1251");
//  setlocale(LC_ALL,"Russian");
//  setlocale(LC_ALL,"1251");
//  setlocale (LC_ALL, "RUS.UTF-8");
 
    char str[2048];
    gets(str);
    puts(str);
    FILE*file=fopen("1.txt","rt");
    fgets(str,2048,file);
    puts(str);
    fclose(file);
}
Собственно, я уже создал отдельный проект, чтобы исключить разные чудеса функций - вот этот простой пример не работает. Я раскомментирую одну из строк вверху - включается либо только русский при вооде-выводе с клавиатуры-на экран, либо только правильно отображается русский текст из файла, но одновременно и тот и другой вариант не работают.

Добавлено через 2 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
а в консоли меняли шрифт?
хм..возможно это поможет...сейчас попробую. Просто setlocal помог и язык отображается правильно, но только в одном из случаев.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
21.08.2014, 20:41 #9
Ну у меня и без всяких локалей отлично отображает русский текст. Правда, проверял только с консолью, файл влом создавать.. И VS2013 (Express)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    //  SetConsoleCP("1251");
    //  SetConsoleOutputCP("1251");
    //  setlocale(LC_ALL,"Russian");
    //  setlocale(LC_ALL,"1251");
    //  setlocale (LC_ALL, "RUS.UTF-8");
 
    char str[2048];
    gets(str);
    puts(str);
    /*FILE*file = fopen("1.txt", "rt");
    fgets(str, 2048, file);
    puts(str);
    fclose(file);*/
    getchar();
    return 0;
}
Русский язык в консоли
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.08.2014, 20:43  [ТС] #10
C++
1
2
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
- Вот средство, но нужно ещё менять шрифт умолчания консоли, а
C++
1
setlocale(...);
с разнообразными аргументами не дают универсального метода.
Спасибо, тема закрыта.

Добавлено через 1 минуту
Цитата Сообщение от KOPOJI Посмотреть сообщение
файл влом создавать
В том и проблема была - отдельно или с тем или с другим - порядок, ног чтобы и то и другое отображалось адекватно не получалось.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16702 / 6624 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
21.08.2014, 20:47 #11
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Вот средство, но нужно ещё менять шрифт умолчания консоли
Параметр для консольной строки - шрифт Lucida Console

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
#include "stdafx.h"
#include <Windows.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hCon = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
    if (hCon != INVALID_HANDLE_VALUE) {
        CONSOLE_FONT_INFOEX cfi;
        cfi.cbSize = sizeof(CONSOLE_FONT_INFOEX);
        cfi.nFont = 0;
        cfi.dwFontSize.X = 0;
        cfi.dwFontSize.Y = 12;
        cfi.FontFamily = FF_DONTCARE;
        cfi.FontWeight = 400;
        wcscpy(cfi.FaceName, L"Lucida Console");
        SetCurrentConsoleFontEx(hCon, FALSE, &cfi);
    }
 
    char str[2048];
    gets(str);
    puts(str);
    /*FILE*file = fopen("1.txt", "rt");
    fgets(str, 2048, file);
    puts(str);
    fclose(file);*/
    getchar();
    return 0;
}
Работает..
0
zer0mail
2379 / 2010 / 200
Регистрация: 03.07.2012
Сообщений: 7,253
Записей в блоге: 1
21.08.2014, 21:23 #12
Retyrn0, по поводу кодировок советую почитать: http://zelserg.livejournal.com/2117.html
1
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
22.08.2014, 00:40  [ТС] #13
Цитата Сообщение от KOPOJI Посмотреть сообщение
Работает..
Спасибо, попробую позже, пока нет возможности. Я правильно понимаю, что и текст из файла будет правильно отображаться?
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2014, 03:07 #14
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Код C++1
2
* * SetConsoleCP(1251);
* * SetConsoleOutputCP(1251);- Вот средство, но нужно ещё менять шрифт умолчания консоли
Есть способ (для студии) не менять шрифт по умолчанию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Шрифт точечный. Русский ввод и вывод без  настройки шрифта (берётся по умолчанию)
// В Code::Blocks не будет работать (отсутствует кодировка 866 )
 
#include <cstdlib>
#include <string>
#include <windows.h>
using namespace std;
 
int main ()
{    
    setlocale(0, "");
    cout << "Русский ввод!" << endl;
    
    SetConsoleCP(1251);
    string str;
    cin >> str;
    SetConsoleCP(866);
    
    cout << str << endl;
    
   system("pause");
   return 0;
}
0
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
22.08.2014, 05:36 #15
Цитата Сообщение от gru74ik Посмотреть сообщение
Retyrn0, тут смотрели?
Имелась ввиду тема Русские шрифты в консоли (на 6 страниц), которая находится в шапке раздела С++ для начинающих.
0
22.08.2014, 05:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2014, 05:36
Привет! Вот еще темы с ответами:

Русский язык в консоли - C++
Здраствуйте, у меня такой вот вопрос: Почему когда я пишу текст на русском языке в программе C++ Builder 2009, то в моей программе вместо...

Русский язык в консоли - C++
для работы с русским языком использую: #include &lt;locale&gt; setlocale(LC_CTYPE, &quot;Russian&quot;); но в програме мне нужно вводить через...

Русский язык в консоли Qt 5.3 - C++
помогите пожалуйста

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


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

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

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