Sziasztok !
A kovetkezo programot szeretnem mukodesre birni.
Az eredmeny :
$ ./a.out
User locale: fr_FR.utf8
àäâéèêëïîöôüû
àäâéèêëïîöôüû
$ locale -a | grep fr
fr_FR.utf8
$ file ./source.cpp
.source.cpp: UTF-8 Unicode C program text
Hol lehet a hiba?
Koszi!
- 6324 megtekintés
Hozzászólások
Meg meg info :
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"
- A hozzászóláshoz be kell jelentkezni
A string osztály mit sem tud arról hogy UTF-8 a kódolásod, ezért az iterátoros megoldás erős gyanúm szerint byte-onként adagolja az értéket a toupper()-nek, amelynek ezáltal egyértelműen esélye sincs jól működni. Egyrészt asszem toupper helyett towupper kéne, másrészt mindenképp teljes Unicode karaktereket kell neki adni, nem pedig byte-okat egyenként az UTF-8 reprezentáció szerint. Sajna nem vagyok annyira penge hogy fejből vágjam hogy van-e olyan UTF-8 string osztály amelyen iterálva karaktereket kapsz és nem byte-okat, avagy egész sztringet végig átalakító toupper-variánst, de ha keresel biztos találsz valamit.
- A hozzászóláshoz be kell jelentkezni
wstring emlékeim szerint a kulcsszó...
- A hozzászóláshoz be kell jelentkezni
>A string osztály mit sem tud arról hogy UTF-8 a kódolásod, ezért az iterátoros megoldás erős gyanúm szerint byte-onként adagolja az értéket a toupper()-nek, amelynek ezáltal egyértelműen esélye sincs jól működni.
Jogos, koszi.
- A hozzászóláshoz be kell jelentkezni
Esetleg így: http://pastebin.com/DgfeaKbG
Ha UTF-8 output kell:
http://pastebin.com/vmVUXVk6
Ha nem Windows: a legegyszerűbb egy wstring
-ről UTF-8 string
-re konvertert implementálni (és úgy nem kell használni a glib-et): rövid kód.
--
http://naszta.hu
- A hozzászóláshoz be kell jelentkezni
Linux alatt dolgozom. Az elso ketto nem mukszik. A 3. az jo otlet. Koszi.
- A hozzászóláshoz be kell jelentkezni
Az első ténylegesen wchar_t
-t küld a kimenetre. Ez általában UTF-16, de például Mac-en UTF-32. A második Linux alatt nem működik, hisz az encoder Windows-os. Azonban a 3-ik használható arra, hogy a wchar_t
alapú wstring
-ből UTF-8-as string
-et készítsen. Ettől a toupper
-t én továbbra is wstring
-en használnám.
--
http://naszta.hu
- A hozzászóláshoz be kell jelentkezni
Egy lehetséges megoldás: http://hup.hu/node/114072
- A hozzászóláshoz be kell jelentkezni
Koszonom, tokeletes. Pont ez kell nekem.
- A hozzászóláshoz be kell jelentkezni