C++ -ban, hogyan tudok ékezetes karakter beolvasni, illetve kiírni?
Akárhogy próbáltam nem jött össze egyszerre a kettő.
Ha kiírni rendesen írja ki, akkor rosszul olvassa be az ékezetes betűket. Ha rendesen beolvassa, akkor pedig rosszul írja ki.
Idáig állítgattam a konzol kódolását, setlocale -t próbáltam, már nem tudom mi mást tudnák, izé tudnék csinálni.
Windows alatt ez reménytelen. A kódod jó, de soha nem fog rendesen megjelenni, mert a konzol hülye kódolásokat használ, és rendesen átállítani se lehet. Ilyen programokat linux terminálban érdemes futtatni, ott az UTF-8 miatt rendesen jelenik meg.
Ha mindenképp windows alatt maradsz, akkor úgy tudod a dolgot ellenőrizni, hogy kiírod fájlba, a szövegszerkesztők megjelenítik rendesen.
Windows alatt:
Mind az stdout-ra, mind az stdin-re alkalmazd. És ne sima karaktertípust használj, hanem wide char-t.
Köszi a válaszokat, kipróbáltam.
Sajnos ez a Windows konzol használhatatlan, egy digitális budiüllőkére hamarabb írnám/olvasnám be az adatokat.
A Micro$oft elkezdhetné javítgatni a dolgait, mert elég sok idegesítő dolga van ezen kívül, mint pl a min/max macro a Windows.h fejlécben.
Legelső próbálkozásomnál átállítottam Central European 1250 CP -re:
SetConsoleCP(1250);
SetConsoleOutputCP(1250);
Igazából erre rá is jöttem 5-10 perc alatt. De órákat szoptam azért mert olyan betűtípus volt alapból a konzolra beállítva amivel ez nem működik. Most, hogy átállítottam már megy prímán.
"Ez csak arra jó, hogy a te vindózodban jól jelenjen meg. Egy kínainak nem fog, vagy egy szerbnek, vagy akárminek. A szőnyeg alá söpörted a problémát..."
Nem is erre való a cmd, úgyhogy nyugodtan megteheti..
65001-gyel (UTF-8) nem lenne jobb?
Csak a magyar karakterekre van szükségem, és így nem kell 2 bytos karaktereket tárolnom.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!