Nie wiem do końca czy o to ci chodzi ale C/C++ ciężko wspiera polskie znaki ;)
Znalazłem coś takiego:
#include <iostream>
#include <conio.h>
using namespace std;
std::string PL( const char * text )
{
std::string result;
for(; * text; text++ )
switch( * text )
{
case 'ą': result += static_cast < char >( 0xa5 ); break;
case 'ć': result += static_cast < char >( 0x86 ); break;
case 'ę': result += static_cast < char >( 0xa9 ); break;
case 'ł': result += static_cast < char >( 0x88 ); break;
case 'ń': result += static_cast < char >( 0xe4 ); break;
case 'ó': result += static_cast < char >( 0xa2 ); break;
case 'ś': result += static_cast < char >( 0x98 ); break;
case 'ż': result += static_cast < char >( 0xbe ); break;
case 'ź': result += static_cast < char >( 0xab ); break;
case 'Ą': result += static_cast < char >( 0xa4 ); break;
case 'Ć': result += static_cast < char >( 0x8f ); break;
case 'Ę': result += static_cast < char >( 0xa8 ); break;
case 'Ł': result += static_cast < char >( 0x9d ); break;
case 'Ń': result += static_cast < char >( 0xe3 ); break;
case 'Ó': result += static_cast < char >( 0xe0 ); break;
case 'Ś': result += static_cast < char >( 0x97 ); break;
case 'Ż': result += static_cast < char >( 0xbd ); break;
case 'Ź': result += static_cast < char >( 0x8d ); break;
default: result += * text; break;
}
return result;
}
int main()
{
cout << PL( "ąćęłńóśżźĄĆĘŁŃÓŚŻŹ" ) << endl;
getch();
return 0;
}
Lub takiego:
#include "windows.h"
#include <string>
const WCHAR PIERWIASTEK = 8730;
void writeUnicode( PCWSTR sText )
{
int bufferSize = WideCharToMultiByte( CP_UTF8, 0, sText, - 1, NULL, 0, NULL, NULL );
char * m = new char[ bufferSize ];
WideCharToMultiByte( CP_UTF8, 0, sText, - 1, m, bufferSize, NULL, NULL );
wprintf( L"%S", m );
delete[] m;
}
void writeUnicode( WCHAR cChar )
{
WCHAR sText[ 2 ] = { cChar };
writeUnicode( sText );
}
int main()
{
UINT oldcp =::GetConsoleOutputCP();
::SetConsoleOutputCP( CP_UTF8 );
writeUnicode( L"Polskie znaki: ąćęłóńśźż\n" );
writeUnicode( PIERWIASTEK );
::SetConsoleOutputCP( oldcp );
return 0;
}