C++ isalpha ékezetes karakterek

Címkék
C++ isalpha ékezetes karakterek
2018-06-05T21:58:10+02:00
2018-06-06T20:31:05+02:00
2022-08-11T04:00:31+02:00
TiviHUN
Sziasztok!
 Van egy rövid kis kódom:

#include <iostream> #include <string> using namespace std; int main() { string nev; bool oke = true; cout << "Add meg a neved:" << endl; cin >> nev; for (int i = 0; i < nev.length(); i++) { while (!isalpha(nev[i])) { cin >> nev; } } return 0; }
Hogy tudnám a lehető legegyszerűbben is belevenni az intervallumba a magyar betűket?
(ASCII kód alapján?)


Köszi!
Mutasd a teljes hozzászólást!
Ez a dolog nem olyan egyszerű, mint amilyennek hiszed. Nagyon sok minden számít.
1. cin-ről érkező bemenet karakterkódolása!
Amennyiben UTF-8-at használsz, akkor egy ékezetes betű, mint pl az 'á', vagy 'é' nem egy bájton tárolódnak, hanem 2-n. Az ilyesmit az isalpha nem tudja helyesen kezelni, mivel ő csak karakterenként vizsgál.

Az lehet a megoldás, ebben az esetben, hogy widechar-t használsz, vagy program kódban konvertálsz:
std::codecvt_utf8_utf16

Egyszerűbb, ha azt mondod, hogy a programod csak adott kódlappal működik, beállítod a megfelelő locale-t és a szerint használod. Ekkor 1 karakter 1 byte lesz és működni fognak a magyar ékezetek is.

Még egyszerűbb ezzel nem foglalkoznod egyelőre :)
Mutasd a teljes hozzászólást!

Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd