Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
1

Как реализовать ввод/вывод текста на русском языке?

25.09.2016, 21:22. Просмотров 952. Ответов 4

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

Решил написать некоторое консольное приложение, дабы повторить все знания 1-го курса программирования в университете. Встретил на своем пути куча проблем, которые, слава богу, решил, но с одной из них борюсь уже 3-ий день. Продемонстрирую код кусками.
  1. Моя программа разбита на модули (классы не использую, только функции). Укажу название модулей.
    Кликните здесь для просмотра всего текста
    • IOPut.cpp
    • Code.cpp
    • Menu.cpp

  2. В main.cpp есть лишь вызов главной функции (Menu()), а также установление локали
    C++
    1
    
    setlocale (LC_ALL, "Rus");
  3. Первым действием я запрашиваю у пользователя текст на русском языке.
    C++
    1
    2
    
    gets(inputChar);
    OemToCharA (inputChar, inputChar);
  4. Переменную передаю из Menu.cpp
    C++
    1
    2
    
    char inputChar [5000]; //Menu.cpp
    int InputFromKeyboard (char inputChar [5000], int &lenInputChar); //IOPut.cpp;
  5. Затем из этой строки получаю необходимый результат типа
    Кликните здесь для просмотра всего текста
    2643759832457832049298437598

  6. И записываю в файл
    C++
    1
    2
    
    for (j=2; j<5; j++) {
    InCodingResult << strFromDictonary[j];
  7. Затем мне необходимо данный результат привести обратно к исходному тексту, введенному на русском языке пользователем. Но облом. Начиная с новой функции результатом этих действий я получаю кракозябру.
    C++
    1
    2
    3
    
    string resultUnCode ("ПУСТО!");
    cout << resultUnCode << endl;
    //результат: P?P?PYPyP?!
    Кликните здесь для просмотра всего текста
    Но, когда я записываю эту строку в файл, то там все корректно.

  8. Далее оставшийся код летит ко всем чертям, прошу прощения за скудность речи.
    Проверка символов одной строки с символами другой строки, взятой из файла, прерывает на 2-м элементе, пропускаются через один символ и происходит непонятно что.

    Перепробовал куча вариантов, чтобы работало все корректно.
    • И это
      C++
      1
      
      СharToOemA(resultUnCode, resultUnCode);
    • И это
      C++
      1
      
      OemToCharA(resultUnCode, resultUnCode);
    • И это
      C++
      1
      
      SetConsoleCP(1251); SetConsoleOutputCP(1251);

Ничего не помогает.
Надеюсь, что хоть тут дадите верный совет..
Если нужно будет больше кода - пишите.
Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2016, 21:22
Ответы с готовыми решениями:

Ввод и вывод в файл на русском языке
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt;...

Ввод и вывод строк на русском языке (кирилице)
Здравствуйте уважаемые форумчани! При решении упражнения возникла следующая проблема, необходимо...

Как организовать ввод данных на русском языке?
Помогите решить проблему, программа не хочет воспринимать русский язык,хотя setlocale(LC_ALL,...

Ввод на русском языке
Как сделать чтоб в джаве ввод можно делать на ру

4
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.09.2016, 22:53 2
Чтобы ввод и вывод работал без перекодирования достаточно сделать как написано здесь: Русские шрифты в консоли
Может, у тебя это обратное преобразование криво работает?
0
nd2
3400 / 2782 / 1250
Регистрация: 29.01.2016
Сообщений: 9,423
25.09.2016, 22:55 3
Цитата Сообщение от dreamn Посмотреть сообщение
И это
C++
1
SetConsoleCP(1251); SetConsoleOutputCP(1251);
При этом способе, шрифт Lucida Console, в свойствах консоли, выбрал?
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
26.09.2016, 08:39  [ТС] 4
Мне необходимо еще и в файл русский текст вводить.
Может мне проще весь проект загрузить?
0
nd2
3400 / 2782 / 1250
Регистрация: 29.01.2016
Сообщений: 9,423
26.09.2016, 08:43 5
Цитата Сообщение от dreamn Посмотреть сообщение
Может мне проще весь проект загрузить?
Может проще на вопрос ответить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2016, 08:43

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

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

Ввод предложения на русском языке
Люди помогите разобраться, как ввести через консоль предложение на русском языке ?

Как для выделенного текста выполнить проверку орфографии на русском языке в Word с помоцью vba?
Как для выделенного текста выполнить проверку орфографии на русском языке в Word с помоцью vba?

Ввод ФИО только на русском языке
Организовать ввод ФИО только на русском языке.


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

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

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