Witam! Tak, wiem, że temat wałkowany był już nieraz, ale nigdzie nie znalazłem satysfakcjonującej mnie odpowiedzi.
Otóż potrzebuję, aby działały polskie znaki w konsoli systemu Windows drukowane cout'em. Sęk w tym, że z powodu budowania programu pod 2 platformy nie bardzo odpowiadają mi żadne rozwiązania, w tym cout << PL("Zażółć gęślą jaźń") << endl;
Miałem kiedyś plik nagłówkowy podobny do tego:
#include <iostream>
using namespace std;
string PL(string znak)
{
for (unsigned i = 0; i < znak.length(); i ++){
switch(znak[i]){
case 'ą':
znak[i] = static_cast<char>(165);
break;
case 'ć':
znak[i] = static_cast<char>(134);
break;
case 'ę':
znak[i] = static_cast<char>(169);
break;
case 'ł':
znak[i] = static_cast<char>(136);
break;
case 'ń':
znak[i] = static_cast<char>(228);
break;
case 'ó':
znak[i] = static_cast<char>(162);
break;
case 'ś':
znak[i] = static_cast<char>(152);
break;
case 'ź':
znak[i] = static_cast<char>(171);
break;
case 'ż':
znak[i] = static_cast<char>(190);
break;
case 'Ą':
znak[i] = static_cast<char>(164);
break;
case 'Ć':
znak[i] = static_cast<char>(143);
break;
case 'Ę':
znak[i] = static_cast<char>(168);
break;
case 'Ł':
znak[i] = static_cast<char>(157);
break;
case 'Ń':
znak[i] = static_cast<char>(227);
break;
case 'Ó':
znak[i] = static_cast<char>(224);
break;
case 'Ś':
znak[i] = static_cast<char>(151);
break;
case 'Ź':
znak[i] = static_cast<char>(141);
break;
case 'Ż':
znak[i] = static_cast<char>(189);
break;
}
}
return znak;
}
Ale działał on tak, że właśnie nie potrzeba było specjalnej składni cout'a, tylko normalnie można było napisać `cout << "Zażółć gęślą jaźń" << endl;' i działało, nie potrzeba było nic więcej, ale niestety nie potrafię przerobić tego pliku nagłówkowego w ten sposób. Czy znajdzie się jakieś rozwiązanie?