Windows'tan farklı platformlarda char *
dizeleri kolayca kullanabilir ve bunları UTF-8 olarak kullanabilirsiniz. Sorun, Windows'ta wchar * dizeleri (W) kullanarak iletileri kabul etmeniz ve göndermeniz gerektiğidir. ANSI işlevlerini (A) kullanırsanız, Unicode'u desteklemezsiniz.C/C++ 'da Unicode dizeleri çapraz platform dostu bir şekilde nasıl ele alınır?
Gerçekten taşınabilir bir uygulama yazmak istiyorsanız, Windows üzerinde Unicode olarak derlemeniz gerekir.
Şimdi, kodu temiz tutmak için, kodda çirkinliği en aza indirecek şekilde, dizelerle uğraşmanın önerilen yolunun ne olduğunu görmek istiyorum.
ihtiyacınız olabilecek dizeleri tipi: std::string
, std::wstring
, std::tstring
, char *
, wchat_t *
, TCHAR*
, CString
(ATL bir).
karşılaşabileceğiniz sorunlar:
cout/cerr/cin
ve bunların Unicodewcout,wcerr,wcin
- tüm değiştirildi geniş dize işlevlerini ve bunların TCHAR makro varyantları -
strcmp
,wcscmp
ve_tcscmp
gibi. - kodun içindeki sabit dizeler, TCHAR ile
_T()
makroları ile kodunuzu doldurmanız gerekecektir.
En iyi nasıl bir yaklaşım olarak görüyorsunuz? (örnekler bekleriz)
Şahsen ben bir std::tstring
yaklaşımına gidecektim, ancak dönüşümlerin gerekli olduğu yere nasıl yapıldığını görmek isterim.
http://utf8everywhere.org hepsini açıklar. –