Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Некорректная кодировка строк[C++]

8.9K
18 марта 2011 года
Apach47
130 / / 14.06.2010
Доброго времени суток уважаемые форумчане.
Имею незамысловатый код:
Код:
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
setlocale(LC_ALL,"Russian");
string str1;
cin >> str1;
cout << str1 << endl;
return 0;
}


Проблема: вместо введенных кириллических символов в переменную, например "Программировать", получаю последовательность чего-то непонятного: ?-*в?-а*?-в-а?-Є«*¬ . При прохождении на отладке получаю примерно такое: "€*вҐа*Ґв-४«*¬*"

Куда рыть не знаю, сам первый раз с таким столкнулся. Подскажите пожалуйста как это исправить или хотя бы в какую сторону копать.
397
18 марта 2011 года
SergPas
527 / / 03.02.2007
Если работаешь под виндой, то попробуй использовать функцию CharToOem()
1
19 марта 2011 года
kot_
7.3K / / 20.01.2000
Дело в том, что ты устанавливаешь преобразование для локали (в винде) cp1251->866. А когда ты вызываешь cin - ты уже помещаешь в строку в кодировке 866. Поэтому тебе необходимо либо предварительно выполнить преобразование полученной строки (OemToChar), либо не использовать setlocale и выполнять преобразование так, как предложил SergPas
8.9K
19 марта 2011 года
Apach47
130 / / 14.06.2010
kot_, понятно.
Только я не могу понять каким должен быть второй аргумент при вызове функции. На msdn написано что там должно быть значения буфера назначения... А что это такое? В гугли ответа не нашел... Подскажи пожалуйста
1
19 марта 2011 года
kot_
7.3K / / 20.01.2000
Цитата: Apach47
kot_, понятно.
Только я не могу понять каким должен быть второй аргумент при вызове функции. На msdn написано что там должно быть значения буфера назначения... А что это такое? В гугли ответа не нашел... Подскажи пожалуйста


честно говоря не знаю что тут непонятного - второй аргумент - это указатель на строку в которую будет помещен результат работы функции.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог