Polskie znaki w konsoli (C++)
Ostatnio zmodyfikowano 2013-06-05 23:35
dawidp Temat założony przez niniejszego użytkownika |
Polskie znaki w konsoli (C++) » 2008-09-12 18:35:18 Niedawno zacząłem się uczyć C++ (niedawno czyli z jakieś pół godziny temu) i przy pierwszym programie typu "hello world" zamiast polskich znaków (takich jak ą ę ć ź itp) pojawiają mi się krzaczki takie jak np. w HTML-u. I w związku z tym mam pytanie następujące jak zrobić, aby pojawiały mi się normalne znaki. CZy nie trzeba czegoś wpisać tak jak w HTML-u? |
|
DejaVu |
» 2008-09-12 18:43:44 Generalnie... wstawianie polskich znaczków jest uciążliwe: 1) Start/Uruchom 2) cmd 3) edit 4) wpisać polskie znaki tam gdzie chcesz mieć 5) zapisz 6) exit 7) otwórz plik 8) skompiluj 9) uruchom program
Jest też chyba możliwość zmiany kodowania... ale nie znam funkcji na chwilę obecną (pamiętam, że coś kiedyś na programowaniu pod linuxem temat był poruszony i pokazany, ale nie wiem czy jest on przenośny do Windowsa i nie pamiętam jak to się robiło). |
|
dawidp Temat założony przez niniejszego użytkownika |
» 2008-09-12 19:23:38 Dzięki za pomoc poszukam jeszcze o tej zmianie kodowania i jak znajdę to gdzieś tu wrzucę może komuś się to przyda. |
|
DejaVu |
» 2008-09-13 17:38:04 Najlepszym rozwiązaniem z jakim się spotkałem na różnych forach to: #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; }
|
|
DejaVu |
» 2008-09-14 14:48:08 Na MSDN'ie jest coś takiego: http://msdn.microsoft.com/en-us/library/ms686036(VS.85).aspx. BOOL WINAPI SetConsoleOutputCP( __in UINT wCodePageID ); Nie wiem jednak jak użyć tej funkcji abyś otrzymał efekt jaki Ciebie interesuje. Trzeba by było poczytać albo gdzieś indziej o tej funkcji, albo przeczytać dokładnie co jest napisane tutaj. /edit: Teoretycznie coś takiego powinno działać... ale nie działa :P #include <windows.h> #include <iostream> #include <conio.h> using namespace std; int main() { SetConsoleCP( 852 ); cout << "ąćęłńóśżźĄĆĘŁŃÓŚŻŹ" << endl; getch(); return( 0 ); }
/edit2: Teoretycznie poniższy kod też powinien działać... ale nie działa :) #include <locale.h> #include <iostream> #include <conio.h> using namespace std; int main() { setlocale( LC_ALL, "pl_PL" ); cout << "ąęćś" << endl; getch(); return 0; } /edit3: #include <iostream> #include <conio.h> using namespace std; int main() { wcout << L"ąćęłńóśżźĄĆĘŁŃÓŚŻŹ" << endl; getch(); return( 0 ); } Powyższy kod również powinien działać, ale nie działa pod Dev-C++ i Code::Blocks: `wcout' undeclared (first use this function) Być może ściągnięcie nowszego kompilatora z nagłówkami rozwziązałoby problem. |
|
dudek |
» 2008-09-14 18:47:59 albo sciagniecie jakiegos enginu konsolowego:) swojego czasu gdzies na gamedev.pl widzialem cos takiego i domyslam sie ze taki engine powinien miec obsluge polskich znakow:) ale glowy nie dam |
|
DejaVu |
» 2013-06-05 23:35:33 |
|
« 1 » |