#include <iostream>
#include <cstring>
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
string str1;
cin >> str1;
cout << str1 << endl;
return 0;
}
Некорректная кодировка строк[C++]
Имею незамысловатый код:
Код:
Проблема: вместо введенных кириллических символов в переменную, например "Программировать", получаю последовательность чего-то непонятного: ?-*в?-а*?-в-а?-Є«*¬ . При прохождении на отладке получаю примерно такое: "€*вҐа*Ґв-४«*¬*"
Куда рыть не знаю, сам первый раз с таким столкнулся. Подскажите пожалуйста как это исправить или хотя бы в какую сторону копать.
Если работаешь под виндой, то попробуй использовать функцию CharToOem()
Дело в том, что ты устанавливаешь преобразование для локали (в винде) cp1251->866. А когда ты вызываешь cin - ты уже помещаешь в строку в кодировке 866. Поэтому тебе необходимо либо предварительно выполнить преобразование полученной строки (OemToChar), либо не использовать setlocale и выполнять преобразование так, как предложил SergPas
Только я не могу понять каким должен быть второй аргумент при вызове функции. На msdn написано что там должно быть значения буфера назначения... А что это такое? В гугли ответа не нашел... Подскажи пожалуйста
Цитата: Apach47
kot_, понятно.
Только я не могу понять каким должен быть второй аргумент при вызове функции. На msdn написано что там должно быть значения буфера назначения... А что это такое? В гугли ответа не нашел... Подскажи пожалуйста
Только я не могу понять каким должен быть второй аргумент при вызове функции. На msdn написано что там должно быть значения буфера назначения... А что это такое? В гугли ответа не нашел... Подскажи пожалуйста
честно говоря не знаю что тут непонятного - второй аргумент - это указатель на строку в которую будет помещен результат работы функции.