Изучаю программирование. Вот решил посмотреть, как моя программа для Windows поведёт себя в Linux.
После исправления ошибок заметил следующее, возьмём к примеру hello world:
#include <iostream>
using std::cout;
int main()
{
std::locale::global(std::locale(""));
cout << "Здраствуй мир!\n";
std::cin.get();
}
Если закоментировать первую строчку функции main, то на Windows эта программа выдаст каракули (так у консоли 866 кодировка, а у исходников обычно 1251). На Windows опять же в независимости от кодировки файла с исходниками, если первая строчка присутствует, то будут выведен текст именно на русском языке. На линукс судя повсему не так.
cout << "Здраствуй мир!\n"; я так понял выводит текст в той же кодировке, что и файл исходников.
Вопрос (из любопытства): можно ли добиться такого же поведения, что и на Windows. Т.е чтобы выводился текст в кодировке текущей локали. Собственно заметил, что при изменении переменной LANG другие программы меняют кодировку текста после перезапуска. Можно как-нибудь сделать такое и в этой программе? Можно ли это сделать средствами C++?