Dizeler Hakkında

Dize işlevleri, uygulamalara karakter dizelerini kopyalama, karşılaştırma, sıralama, biçimlendirme ve dönüştürme araçlarının yanı sıra bir dizedeki her karakterin karakter türünü belirleme araçları sağlar. Bu karakter kümeleri uygulamanın çalıştırıldığı işletim sistemi tarafından destekleniyorsa, tüm dize işlevleri tek bayt, çift bayt ve Unicode karakter kümelerini destekler.

Güvenlik Uyarısı: Dize işlevlerinin yanlış kullanılması uygulamanız için güvenlik sorunlarına neden olabilir. Bu genellikle uygulamanıza yönelik bir hizmet reddi saldırısına veya bir saldırgandan yürütülebilir kod eklenmesine izin veren bir arabellek taşması içerir. Strsafe işlevleri, dizelerin daha güvenli işlenmesini sağlar ve uygulamanız için daha iyi güvenlik için önerilir. Bu işlevler hakkında daha fazla bilgi için bkz. Strsafe.h İşlevlerini Kullanma.

Bu bölümde aşağıdaki konular ele alınmaktadır.

C Run-Time Dize İşlevleri ile Karşılaştırma

Birçok dize işlevi, standart C çalışma zamanı (CRT) kitaplığından tanıdık dize işlevlerini yineler veya geliştirir. Geliştirmelerin çoğu dize işlevlerinin Unicode veya genişletilmiş karakter kümeleriyle çalışmasını sağlar. Aşağıdaki tabloda CRT işlevleri, Windows işlevleri (CRT işlevlerinin aksine Unicode'ı destekleyen) ve StrSafe işlevleri gösterilmektedir.

CRT String Fonksiyonu Windows Dize İşlevi StrSafe İşlevi
strcat lstrcat
StringCchCat
StringCchCatEx
StringCbCat
StringCbCatEx
strcmp lstrcmp (eşdeğer işlev yok)
strcpy lstrcpy
StringCchCopy
StringCchCopyEx
StringCbCopy
StringCbCopyEx
strlen lstrlen
StringCchLength
StringCbLength

 

Örneğin strlen işlevi her zaman bir dizedeki bayt sayısını döndürür, ancak lstrlen işlevi, işlevin ANSI sürümleri için baytları veya Unicode sürümleri için WCHAR değerleriniTCHAR değerlerinin sayısını döndürür.

Aşağıdaki dize işlevleri, tolower ve upper gibi standart C işlevlerinden farklıdır ve bunlar bir karakter kümesindeki herhangi bir karakter üzerinde çalışır. Örneğin, CharLower işlevini kullanarak, bir uygulama umlaut (Ü) içeren büyük harfli U harfini küçük harfe (ü) dönüştürebilir. Karakter kümeleri hakkında daha fazla bilgi için bkz. Tek Baytlı Karakter Kümeleri.

Fonksiyon Açıklama
CharLower Bir karakteri veya dizeyi küçük harfe dönüştürür.
CharLowerBuff Karakter dizesini küçük harfe dönüştürür.
CharNext Dizedeki bir sonraki karaktere geçer.
CharPrev Bir dizedeki önceki karaktere gider.
CharUpper Bir karakteri veya dizeyi büyük harfe dönüştürür.
CharUpperBuff Dizeyi büyük harfe dönüştürür.

 

Aşağıdaki dize işlevleri, kullanıcı tarafından seçilen dilin semantiğine göre bir karakter hakkında belirlemeler yapar. Bu işlevler Unicode etkindir.

Fonksiyon Açıklama
IsCharAlpha Bir karakterin alfabetik olup olmadığını belirler.
IsCharAlphaNumeric Bir karakterin alfasayısal olup olmadığını belirler.
IsCharLower Bir karakterin küçük harf olup olmadığını belirler.
IsCharUpper Bir karakterin büyük harf olup olmadığını belirler.

 

Aşağıdaki tabloda standart C çalışma zamanı (CRT) işlevlerinin Unicode uzantıları gösterilmektedir. Daha önce belirtildiği gibi, StrSafe işlevleri dizelerin daha güvenli işlenmesini sağlar ve uygulamanız için daha iyi güvenlik için önerilir.

Standart CRT işlevi Dize İşlevi StrSafe İşlevi
sprintf wsprintf
StringCchPrintf
StringCchPrintfEx
StringCbPrintf
StringCbPrintfEx
vsprintf wvsprintf
StringCchVPrintf
StringCchVPrintfEx
StringCbVPrintf
StringCbVPrintfEx

 

Dize Kaynakları

Kaynaklarda karakter dizelerini koruyan bir uygulama, en az çabayla yeni dillere çevrilebilir. Kaynak modüllerdeki dizeleri aramak yerine, kaynak dosyasındaki dizeleri çevirip uygulamayı yeniden bağlayabilirsiniz. Ayrıca, dize kaynaklarının kullanılması aynı kaynak dosyalardan uygulamanın Unicode ve Unicode olmayan sürümlerinin oluşturulmasını kolaylaştırır.

LoadString işlevi, uygulamanın yürütülebilir dosyasından bir dize kaynağı yükler. FormatMessage işlevi bir dize kaynağını yükler ve dizeye eklenmiş olabilecek biçimlendirme seçeneklerini yorumlar.

İkili biçimdeki kaynaklar Unicode biçiminde depolanır. Kaynaklar yüklenirken, uygulamalar kaynakları Unicode verileri olarak almak için kaynak işlevlerinin Unicode sürümünü (örneğin LoadStringW) kullanabilir.

16 bit dize kaynakları için uzunluk üst sınırı 255 karakterdir. 32 bit dize kaynakları için uzunluk üst sınırı 65535 karakterdir.