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

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

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

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

28.04.2017, 16:45. Просмотров 514. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русские буквы в c++ char (C++):

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

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

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

Пропадают русские символи при конвертации из wchar_t to char - C++
string WcharToChar( const wstring&amp; str){ char * res = (char*)malloc(str.length()); ZeroMemory(res,str.length()); res = L'\0'; ...

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

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

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

А ещё, если пролистать эту страницу до самого низа, обнаружится ещё десяток тем. Уж где-нибудь да найдётся.
0
nd2
2453 / 2042 / 718
Регистрация: 29.01.2016
Сообщений: 6,718
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
2453 / 2042 / 718
Регистрация: 29.01.2016
Сообщений: 6,718
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
2453 / 2042 / 718
Регистрация: 29.01.2016
Сообщений: 6,718
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 / 4
Регистрация: 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
2453 / 2042 / 718
Регистрация: 29.01.2016
Сообщений: 6,718
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
2453 / 2042 / 718
Регистрация: 29.01.2016
Сообщений: 6,718
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 / 4
Регистрация: 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
28.04.2017, 17:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2017, 17:39
Привет! Вот еще темы с ответами:

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

Русские буквы - C++
Всем добрый день. Необходимо написать программу, что бы она считала количество символов, с которых начинаются слова (например, &quot;привет,...

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

русские буквы - C++
Всем привет!!! У меня есть один вопрос, может кто-нибудь знает ответ на него. Итак, как известно в с++ можно вводить только английские...


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

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

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