(C++) Miért nem működik ez az egyszerű kód?
Az lenne a program lényege hogy egy szöveget átalakít úgy, hogy csak az angol abc betűi legyenek benne. Irtam egy kódot ami ha egy á betűt kab akkor a betűt ad vissza de nem működik.
char c;
cin>>c;
if(c=='á')
c='a';
cout<<c;
Igazából tudom hogy miért nem jó a kód. A forrásban megadott ékezetes karakterek hex kódja nem azonos a konzolban írt ékezetes karakterekével. PL ha a forráskódban az van, hogy :
char c='á' akkor így c hex értéke -31
viszont ha a konzolban inputtal adunk neki értéket és ugyanúgy á betűt adunk be neki
char c;
cin>>c; akkor c hex értéke így -96.
Ez mitől van és hogy lehetne megoldani?
Kérdező:
Talán az lehet a gond, hogy a forráskódod és a konzol karakterkódolása eltérő.
Írd át úgy, hogy az legyen benne, ami ebben. Alapból ez van beállítva, láthatod is az 'á'-nál, hogy tényleg 160 (=256-96)
Egyébként a windows konzolban a output és az input kódlap is szokott különbözni, bár én nem tudom, hogy miért. Azokat is megpróbálhatod átállítani egyébként.
(system()-el, de inkább winAPI függvényekkel, setConsoleOutputCp() vagy valami ilyesmi, nézd meg MSDN-en)
Használj UTF-8-at, vagy Unicode-ot.
A Windows cserélgeti a 8-bites karaktertáblákat, így az 'á' glyph nem mindig azonos helyen található.
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!