Форум программистов, компьютерный форум CyberForum.ru

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

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

Неверное считывание символов русского языка - C++

01.04.2014, 19:51. Просмотров 906. Ответов 3
Метки нет (Все метки)

Visual Studio 2013. При считывании русских символов всеми возможными средствами (cin, scanf, getch и др.) считывается неверный код, который должен быть, и с отрицательным знаком. Из всех этих средств правильно работает только cin.getline(), но эта функция работает со строками, а не с символами.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Rus");
    char c;
    cin >> c;
    printf("%d %d", c, 'П'); 
    cout << endl;
    system("pause");
    return 0;
}
При вводе "П" выдает "-113 -49". Как добиться корректного считывания русских символов? Т.е. чтобы константа 'П' равнялась считываемому символу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 19:51     Неверное считывание символов русского языка
Посмотрите здесь:

Использование русского языка в DevC++ C++
Компилятор с поддержкой русского языка C++
Ввод/вывод с использование русского языка C++
Считывание текстового масива , русского C++
Поддержка русского языка в Embarcadero RAD Studio XE3 на Си++ C++
C++ Произвольное слово разбить для переноса по правилам русского языка
Вместо русского языка в DOS выходят непонятные знаки и слова C++
Ошибка с подключением русского языка C++
C++ Подключение русского языка
В консоли вместо русского языка выводятся вопросительные знаки C++
Замена нижнего регистра литер русского языка, вводимых с клавиатуры, на верхний регистр C++
Произвольное слово разбить для переноса по правилам русского языка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2308 / 1934 / 192
Регистрация: 03.07.2012
Сообщений: 6,924
Записей в блоге: 1
01.04.2014, 20:06     Неверное считывание символов русского языка #2
Можно тут глянуть Русские шрифты в консоли или тут http://zelserg.livejournal.com/2117.html
-=ЮрА=-
Заблокирован
Автор FAQ
01.04.2014, 20:08     Неверное считывание символов русского языка #3
didyoumean, используй широкие символы,
Цитата Сообщение от didyoumean Посмотреть сообщение
setlocale(LC_ALL, "Rus");
- это не панацея
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <clocale>
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE,".866");
    wchar_t symbol;
    wcin>>symbol;
    wcout<<symbol<<endl;
    return 0;
}
didyoumean
1 / 1 / 0
Регистрация: 12.06.2013
Сообщений: 12
01.04.2014, 20:15  [ТС]     Неверное считывание символов русского языка #4
Спасибо, я не использовал SetConsoleCP(1251), думал, что одной setlocale(LC_ALL, "Rus") хватит. Надо бы изучить данный вопрос
Yandex
Объявления
01.04.2014, 20:15     Неверное считывание символов русского языка
Ответ Создать тему
Опции темы

Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru