Setlocale 0
Автор SA-Corp. задал вопрос в разделе Другие языки и технологии
C++ русские буквы в string и setlocale. setlocale(0,""); string name; cin>>name; cout<<"Имя: "; cout< и получил лучший ответ
Ответ от Ra[гуру]
Visual C++, unicode:
#include <locale>
#include <string>
#include <iostream>
using namespace std;
int main() {
wcout.imbue(locale(".866"));
wcin.imbue(locale(".866"));
wcout << L"Имя: ";
wstring name;
wcin >> name;
wcout << L"Привет, " << name << endl;
}
Можно по всякому извращатся с WinAPI SetConsole...CP() функциями, OemToChar...(), system("chcp 1251") и т. д. Например:
#include <windows.h>
#include <locale>
#include <string>
#include <iostream>
using namespace std;
string &ru(string &s) {
for (int j = 0; j < s.size(); ++j) {
char c = s[j], e;
OemToCharBuff(&c, &e, 1);
s[j] = e;
}
return s;
}
int main() {
locale::global(locale(""));
cout << "Имя: ";
string name;
cin >> name;
cout << "Привет, " << ru(name) << endl;
}
Вот еще рецепт:
ну дык что написано в коде - сохранено в кодировке текстового документа что введено с клавы - в кодировки консоли если они не совпадают - такое поведение и получишь