Aracılığıyla paylaş


Dize İşlevi Farkları

Bu konuda, Unicode ve karakter kümesi bilgilerini işlerken kullanılan dize işlevleri arasındaki farklar açıklanmaktadır. Bu işlevlerin hem unicode hem de Windows kod sayfası Unicode ve Windows kod sayfası parametrelerini desteklemek için uygulamaları vardır.

Aşağıdaki dize işlevleri özel açıklama gerektirmez. Unicode ve Windows kod sayfası uygulamaları aynı şekilde çalışır.

Dize uzunluğu işlevlerinden biri tarafından alınan uzunluk değeri her zaman normal karakter genişliğine dayanır: Windows kod sayfaları için 8 bit, Unicode için 16 bit. Bu değer genellikle "karakter sayısı" olarak adlandırılır. Bu terim kesinlikle doğrudur çünkü (DBCSs) çift bayt karakter kümesi kullanan Windows kod sayfalarında aslında ardışık iki baytla temsil edilen bazı tam genişlikli karakterler bulunur. Unicode'da vekilleri için de benzer bir durum ortaya çıkar.

Aşağıdaki dize işlevleri, kullanıcının Denetim Masası'nda seçtiği dilden türetilen geçerli iş parçacığının yerel ayarına duyarlıdır. lstrcmp ve lstrcmpi işlevleri, ANSI ad kutuları gibi bayt karşılaştırmaları gerçekleştirmez, örneğin strcmp. Bunun yerine, dizeleri yerel ayarın kurallarına göre karşılaştırır.

Aşağıdaki işlevler, hangi sürümün kullanıldığına bağlı olarak OEM karakter kümesi ile geçerli Windows kod sayfası veya Unicode arasında dönüştürülür:

Örneğin, StringCbPrintfyazdırma işlevleri, biçim belirtimlerinde aşağıdaki yeni ve değiştirilmiş veri türlerini sağlayarak Unicode'ı destekler. Bu biçim belirtimleri, işlevlerin ilgili giriş parametresini yorumlama biçimini etkiler.

Biçim belirtimi Windows kod sayfası sürümü için veri türü Unicode sürümü için veri türü
c CHAR WCHAR
C WCHAR CHAR
hc, hC CHAR CHAR
hs, hS LPSTR LPSTR
lc, lC WCHAR WCHAR
ls, lS LPWSTR LPWSTR
s LPSTR LPWSTR
S LPWSTR LPSTR

 

Çıkış metninin veri türü her zaman işlevin sürümüne bağlıdır. Giriş parametresinin veri türü ve çıkış metninin veri türü kabul edilmediğinde, yazdırma işlevi Unicode'dan geçerli Windows kod sayfasına (veya tam tersi) gerektiği gibi bir dönüştürme gerçekleştirir.

Yazdırma işlevlerinin Unicode sürümü için biçim dizesi, çıkış metni gibi Unicode'dur.

Dikkat

Zayıf arabellek işleme, arabellek taşmalarını içeren birçok güvenlik sorununa dahil edilir. Bkz. strsafe.h başvuru . Strsafe.h'de tanımlanan işlevler, kodunuzda uygun arabellek işleme için ek işleme sağlar. Bu nedenle, yerleşik C/C++ karşılıklarının yanı sıra belirli Microsoft Windows uygulamalarının yerini almaları amaçlanmıştır. Daha fazla bilgi için bkz. Güvenlik Konuları: Uluslararası Özellikler.

 

Windows API 'de Unicode