Merhaba,
wstring,wchar_t tipleri ne işe yarıyorlar,ve nerede kullanılıyorlar ?
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Thread overview | ||||||
---|---|---|---|---|---|---|
|
March 21, 2018 wstring | ||||
---|---|---|---|---|
| ||||
Merhaba, wstring,wchar_t tipleri ne işe yarıyorlar,ve nerede kullanılıyorlar ? -- |
March 21, 2018 wstring | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Eskiden D 'de yer zaman 4 byte sabit diye utf32 'i temsil eden dstring 'i kullanmak zorunda kalıyorduk çok nadirde olsa. Ali Abi bu konuyu açma fırsatın olurmu? Hangi durumlarda utf32 'i kullanan dstring'e mecbur kalıyoruz. Eğer mümkünse utf8 'i desteklemeyen std fonksiyonlarının en popülerlerinden bir kaçını yazma şansın olurmu? Erdemdem. -- |
March 21, 2018 wstring | ||||
---|---|---|---|---|
| ||||
Posted in reply to hsencan | string'in elemanları char'dır. Her ne kadar standart char'ın büyüklüğünü kısıtlamasa da artık her yerde 8 bit olduğunu kabul edebiliriz. Özel anlamları olan kontrol karakterlerini çıkartınca 8 bit ile ifade edilebilen karakter sayısı çok azdır. (Türkçe için sorun değil ama birden fazla alfabeyi desteklemek isteyince yetmez.) Buna rağmen, birden fazla 8 bitlik birimle ifade edilen Unicode'un UTF-8 gibi kodlamalarında 8 bit kullanılır. wchar_t, örneğin 16 bit olduğundan örneğin 60 bin karakteri ifade edebilir. wstring, string'in eleman olarak wchar_t kullananıdır. Windows arayüzünde wide string kullanan işlevlerde işe yarıyor galiba ama artık UTF-8'in yerleşmiş olduğunu düşünebiliriz. wstring D'de de hemen hemen hiç kullanılmıyor. Benim bu konuda bildiklerim şurada: http://ddili.org/ders/d/karakterler.html Ali -- |
March 21, 2018 wstring | ||||
---|---|---|---|---|
| ||||
Posted in reply to kerdemdemir | dstring'in avantajı, UTF-32 kodlaması olduğundan rastgele erişime olanak vermesi. Yani, RandomAccessRange olarak kullanılabiliyor. UTF-8'de karakterler farklı sayıda char'dan oluşabildiklerinden string'in istediğimiz noktasına erişme şansımız yok. Böyle bakınca sanki string yetersizmiş gibi görünebiliyor. Ancak, düşününce öyle olmadığı en az iki noktayla kanıtlanabilir:
Dolayısıyla, dstring'i rasgele erişimle kullanabilmek için dizgide böyle gariplikler olmadığından da emin olmak gerekir. dstring'in veya dchar karşımıza çıkmasının bir nedeni, Phobos işlevlerinin "auto decoding" denen ama herkes tarafından sevilmeyen bir huylarının olmasıdır: Kullanışlı olma adına, string üzerinde ilerlerken UTF-8 otomatik olarak ayrıştırılır ("decode edilir") ve işlevler bize char değil, dchar gösterirler. Kullanışlıdır çünkü Unicode karakter parçalarına değil, Unicode karakterlerine erişmiş oluruz. Ama bunun bir bedeli var: elemanları char olan string'de ilerlerken karşımıza dchar elemanlar çıkar:
Senin de gözlemlediğin gibi, D'ye alıştıkça daha çok string kullanıyoruz ve dchar'la daha az karşılaşıyoruz. (Aslında daha sık karşılaşıyoruz ama bu daha az sorun oluşturuyor. :) ) Ali -- |