C ++ 'daki strxfrm () işlevi, belirli bir boş sonlandırılmış bayt dizesini uygulama tanımlı bir biçime dönüştürür.
Strxfrm () işlevi, dizgiyi, dönüştürülmüş iki dizeyi strcmp () işlevini kullanarak karşılaştırmak, geçerli C yerel ayarında strcoll () işlevini kullanarak orijinal dizeleri karşılaştırmakla aynı sonucu verecek şekilde dönüştürür.
Örneğin, x ve y iki dizedir. a ve b, sırasıyla x ve y'nin strxfrm işlevi kullanılarak dönüştürülmesiyle oluşturulan iki dizedir. Sonra strcmp (a, b) çağrısı strcoll (x, y) çağrısı ile aynıdır.
strxfrm () prototipi
size_t strxfrm (karakter * hedef, sabit karakter * src, boyut_t sayısı);
Strxfrm () işlevi, src ile gösterilen dizenin ilk count karakterlerini bir gerçekleme tanımlı forma dönüştürür ve sonuç, dest ile gösterilen bellek konumunda saklanır.
Bu işlevin davranışı şu durumlarda tanımsızdır:
- dest boyutu gerekli boyuttan daha küçük.
- dest ve src örtüşüyor.
Başlık dosyasında "> başlık dosyasında tanımlanır.
strxfrm () Parametreler
- dest: dönüştürülen dizenin depolandığı diziye işaretçi.
- src: dönüştürülecek boş sonlandırılmış dizgeye işaretçi.
- sayı: dönüştürülecek maksimum karakter sayısı.
strxfrm () Dönüş değeri
Strxfrm () işlevi, sonlandırıcı boş karakter ' 0' hariç, dönüştürülen karakter sayısını döndürür.
Örnek: strxfrm () işlevi nasıl çalışır?
#include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const char* s1 = "hrnec"; const char* s2 = "chrt"; char t1(20), t2(20); cout << "strcoll returned " << strcoll(s1,s2) << endl; cout << "Before transformation, " << "strcmp returned " << strcmp(s1,s2) << endl; strxfrm(t1,s1,10); strxfrm(t2,s2,10); cout << "After transformation, " << "strcmp returned " << strcmp(t1,t2) << endl; return 0; )
Programı çalıştırdığınızda, çıktı:
strcoll -1 döndürdü Dönüşümden önce strcmp 1 döndürdü Dönüşümden sonra strcmp -1 döndürdü