PDA

Prikaži potpunu verziju : Zamjena latiničnih slova u ASCII (C++)


NikolaTECH
27.6.2015, 13:04
Počeo sam da gledam neku seriju, ali ima problema sa prevodom. E sad, moja ideja je da napravim program u kome se unosi ime titla, i da se u titlu pronađu i mala i velika slova š, đ, č, ć, ž i da se zamjene sa s, dj, c, c, z..

Uradio sam da učita prvi file, da u njemu promijeni latinična slova, i prebaci u novu datoteku, jer sam pokušavao da promijeni i nije radilo. Evo kod:
http://pastebin.com/E5eKaSpr

voodoo_
27.6.2015, 14:58
Verovatno ti ne radi jer uopšte nisi vodio računa o enkodingu.

https://en.wikipedia.org/wiki/Character_encoding

Da li je ulazni fajl ANSI kodovan u odgovarajućem codepage-u, ili je UTF-8, ili Unicode? Ako je npr. UTF-8, onda se za sve preko 127 koriste dva bajta po znaku, a C++ char to ne podržava i za jedno naše slovo treba da proveriš dva bajta a ne jedan.

Uglavnom tema je složenija i moraš proučiti pozadinu enkodovanja teksta u fajlovima i podrške u C++ pre nego što se baciš na posao. C++ generalno nije dobro rešenje za ovo (za početnika), Java i .NET imaju mnogo bolju podršku za rad sa tekstualnim streamovima i mnogo se lakše bore sa encodingom teksta i konverzijom.

Teva
28.6.2015, 11:44
Ili počni da koristiš QtFramework... QString je daleko bezbolnija varijanta za lokalizaciju od native podrške xD
Ako baš hoćeš da koristiš native, imaš wchar i wstring... Pored već pomenute problematike oko encodinga (uglavnom je UTF-8, pa bi to mogao i nekako da pretpostaviš), imaš problem i oko samog kompajlera i sistema jer se razlikuju... Pametnije ti je da odeš u podešavanja plejera i staviš encoding ne East/Central European i da uživaš :D