There is no such thing as a stupid question, until you ask it
Начинаю работать со строчками и столкнулась с такой проблемой: даже при использовании setlocale строковая переменная, заполняющаяся кириллицей, не выводится в нужной кодировке, даже если с ней ничего не делать и выводить сразу же после инициализации.
То есть, мой кусок кода выдает краказябру:
читать дальше

Каким образом надо шаманить с setlocale (или даже _tmain?..), чтобы это исправить?

@темы: C++, C#

Комментарии
20.03.2014 в 16:03

Миру - мир. А Вам - пломбир!
Почему не
setlocale(LC_ALL, "Russian");
?
20.03.2014 в 16:07

There is no such thing as a stupid question, until you ask it
Скептичный циник, а) а чем они различаются?
б) уже пробовала, выдает то же самое
20.03.2014 в 16:22

Миру - мир. А Вам - пломбир!
Если и так тоже не работает, то нужно смотреть какой компилятор используется, какая ос, проверять кодировку куда всё это выводится ибо тогда уже платформозависимая ошибка.

#include <iostream>
#include <string>

using namespace std;

int main()
{
string str;
cout << "Напишите что-нибудь: ";
getline(cin, str);
cout << "Проверяем: " << str << endl;
}

20.03.2014 в 16:28

There is no such thing as a stupid question, until you ask it
Скептичный циник, опять ничего :c
Даже смена шрифта на Lucida Console в окне не помогает.

проверять кодировку куда всё это выводится
А как это сделать?
20.03.2014 в 16:34

Миру - мир. А Вам - пломбир!
Ничего – это ошибки? Или кракозябры?
И какие конкретно? По ним можно определить какую кодировку ожидает консоль.

Тогда сначала надо смотреть:
– Какая ОС?
– Какая IDE?
– Какой компилятор?
А потом уже решать.

Судя по "system("pause");" – винда? Если так, то подождём кого-нибудь в этом треде, с виндой под рукой. Мне негде её добыть сейчас и не писал под неё очень давно. Я бы попробовал отдавать в консоль cp866 или cp1251.
20.03.2014 в 16:42

There is no such thing as a stupid question, until you ask it
Скептичный циник, ошибок нет, просто кракозябры.
Семерка, visual studio 2008.

Думаю, может, ну его? Просто буду работать в латинице ._.
20.03.2014 в 21:00

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
одной только setlocale() вы в винде не обойдётесь - придётся ещё юзать AnsiToOem() или OemToAnsi()