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

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

Восстановить пароль Регистрация
 
didyoumean
1 / 1 / 0
Регистрация: 12.06.2013
Сообщений: 12
01.04.2014, 19:51     Неверное считывание символов русского языка #1
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". Как добиться корректного считывания русских символов? Т.е. чтобы константа 'П' равнялась считываемому символу.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2188 / 1871 / 187
Регистрация: 03.07.2012
Сообщений: 6,660
Записей в блоге: 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     Неверное считывание символов русского языка
Ответ Создать тему
Опции темы

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