Kezdőoldal » Számítástechnika » Programozás » (C++) Miért nem működik ez az...

(C++) Miért nem működik ez az egyszerű kód?

Figyelt kérdés

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?



2014. dec. 31. 10:04
 1/3 anonim ***** válasza:

Kérdező:

Talán az lehet a gond, hogy a forráskódod és a konzol karakterkódolása eltérő.

2014. dec. 31. 10:52
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

[link]


Í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)

2014. dec. 31. 11:06
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

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ó.

2015. jan. 10. 09:54
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!