Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
#1

Русские буквы в c++ char

28.04.2017, 16:45. Просмотров 1088. Ответов 15
Метки нет (Все метки)

Здравствуйте, уже все облазил так ничего не нашел и не понял, нужно понять одну простую вещь, необходимо ввести с клавиатуры русское слово и чтобы он тут же вывел его, в нормальном виде, повторюсь мне надо его ввести самому с клавиатуры, чтобы он не был задан изначально в коде самой программы, делается это как-то через AnsiToOem, а как именно я понять не могу, пока вот что имею:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    char s[20]; int i;
    cout << "\n введи слово \n";
    cin >> s;
    cout << s;
    return (0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2017, 16:45
Ответы с готовыми решениями:

Прочитать русские буквы в массив char с помощью cin
Какую нужно добавить библиотеку, или еще что-то? просто setlocale(LC_ALL,...

Русские символы в массиве char
имеется функция возвращающая массив байтов(символов), если данная строка...

UTF-8 - русские символы в char посимвольно
Здравствуйте, в проекте используется UTF-8, и в char и в string я не могу...

Пропадают русские символи при конвертации из wchar_t to char
string WcharToChar( const wstring&amp; str){ char * res =...

Как получить int представление char (русские символ cp1251)?
Как получить int представление char (русские символ cp1251)?

15
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
28.04.2017, 16:52 #2
Русские шрифты в консоли
Целая тема на 3 страницы.

А ещё, если пролистать эту страницу до самого низа, обнаружится ещё десяток тем. Уж где-нибудь да найдётся.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,042
28.04.2017, 16:57 #3

Не по теме:

"Рука бойцов колоть устала..."


C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.
0
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
28.04.2017, 17:02  [ТС] #4
nd2, John Prick, как обычно, спрашиваешь одно, отвечают совсем другое
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,042
28.04.2017, 17:04 #5
Цитата Сообщение от dubik11 Посмотреть сообщение
как обычно, спрашиваешь одно, отвечают совсем другое
Чем мой ответ не устраивает?
0
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
28.04.2017, 17:06  [ТС] #6
nd2, ну я же уточнил, читал что как-то это можно сделать через AnsiToOem, в любом случае спасибо большое, хоть не перенаправили на 3 листа обсуждений
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,042
28.04.2017, 17:08 #7
Цитата Сообщение от dubik11 Посмотреть сообщение
что как-то это можно сделать через AnsiToOem
Можно, и что? Мой вариант чем не устраивает? Насчёт AnsiToOem смотри по ссылке во 2 посте, там есть.
0
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
28.04.2017, 17:13  [ТС] #8
nd2, не могу я найти, не могу понять как применить это все именно для моей программы, там все слова эти уже записываются в коде программы, а у меня человек сам вводит слово с клавиатуры, каждый раз новове
0
LightDays
10 / 10 / 8
Регистрация: 19.02.2017
Сообщений: 42
Завершенные тесты: 1
28.04.2017, 17:20 #9
Цитата Сообщение от dubik11 Посмотреть сообщение
необходимо ввести с клавиатуры русское слово и чтобы он тут же вывел его, в нормальном виде, повторюсь мне надо его ввести самому с клавиатуры, чтобы он не был задан изначально в коде самой программы
Что не понятно в объяснении nd2, и John Prick ?

Если сделаете один из предложенных вариантов, то будете вводить спокойно свои собственные предложение и нормально отображать их в консоли.
0
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
28.04.2017, 17:21  [ТС] #10
LightDays, не могу я понять как пользоваться этой функцией, не могу, объясните пожалуйста?
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,042
28.04.2017, 17:23 #11
Цитата Сообщение от dubik11 Посмотреть сообщение
не могу я понять как пользоваться этой функцией
Какой функцией?
0
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
28.04.2017, 17:25  [ТС] #12
вот конкретно эта функция:
C++
1
2
3
4
5
6
char bufRus[256];
 
char* Rus(const char* text) {
CharToOem(text, bufRus);
return bufRus;
}
что здесь за что отвечает? что за const char*
что за tex что за bufrus? не понимаю, помогите разобраться пожалуйста, буду очень благодарен
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,042
28.04.2017, 17:25 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char s[20]; int i;
    cout << "\n введи слово \n";
    cin >> s;
    cout << s;
    return (0);
}
Цитата Сообщение от nd2 Посмотреть сообщение
В свойствах консоли выбрать шрифт: Lucida Console.
Установка шрифта Lucida Console
Так понятно?
0
LightDays
10 / 10 / 8
Регистрация: 19.02.2017
Сообщений: 42
Завершенные тесты: 1
28.04.2017, 17:34 #14
C++
1
2
3
4
5
char* Rus(const char* text) 
{
CharToOem(text, bufRus);
return bufRus;
}


Наша функция типа char* это указатель на тип char, а значит, что она вернет строку. Какую? Очевидно ту, которая будет нормально отображать русский текст.
В аргументе функции const char* test это константный указатель на типа char (то есть указатель на строку, которую нужно конвертировать в русский текст). А test это сама константная строка (вы можете поменять название)
Константный означает, что в самой функции строка test меняться не сможет. Сделано это в целях защиты программистов от самих себя. (то есть если вы передали в функцию "Привет" то она должна без изменения вернуть "Привет")
{ - начало функции

CharToOem(text, bufRus); - это какая то функция (кот в мешке), которая из строки test берет строку, как то с ней работает, и перемещает нормальный русский текст в bufRus

return bufRus; - возвращает эту нормальную строку из функции.

} - конец функции
0
dubik11
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 10
28.04.2017, 17:39  [ТС] #15
и как мне теперь это чудо все запихнуть в мою программу?
0
h3mbr0
294 / 104 / 30
Регистрация: 12.03.2012
Сообщений: 419
28.04.2017, 18:20 #16
C
1
2
3
4
5
6
7
8
    DWORD cw;
    WriteConsoleA(
        GetStdHandle(STD_OUTPUT_HANDLE),
        s,
        strlen(s),
        &cw,
        NULL
    );
0
28.04.2017, 18:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2017, 18:20

Русские буквы
такая ситуация : написал в консоле карточную игру, для обозначения значков...

русские буквы
Иероглифы вместо русских слов.Что делать??? (Пользуюсь С++ Builder 2010)

русские буквы
можно ли как-нибудь ввести в консоль русский текст, получить его, а затем...


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

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

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