C ++ wcsxfrm () - C ++ Standart Kitaplığı

C ++ 'daki wcsxfrm () işlevi, belirli bir boş sonlandırılmış geniş dizgeyi uygulama tanımlı bir biçime dönüştürür.

Wcsxfrm () işlevi, geniş bir dizeyi, dönüştürülmüş iki geniş dizeyi wcscmp () işlevini kullanarak karşılaştırmak, geçerli C yerel ayarında wcscoll () işlevini kullanarak orijinal geniş dizeleri karşılaştırmakla aynı sonucu verecek şekilde dönüştürür.

Örneğin, x ve y iki geniş dizedir. a ve b, sırasıyla x ve y'yi wcsxfrm işlevi kullanılarak dönüştürülerek oluşturulan iki geniş dizedir.

Sonra,

 wcscmp (a, b) = wcscoll (x, y)

Başlık dosyasında tanımlanmıştır.

wcsxfrm () prototipi

 size_t wcsxfrm (wchar_t * dest, const wchar_t * src, size_t sayım);

Wcsxfrm () işlevi, src ile işaret edilen geniş dizenin ilk count geniş karakterlerini bir gerçekleme tanımlı forma dönüştürür ve sonuç, dest ile gösterilen bellek konumunda depolanır.

Bu işlevin davranışı şu durumlarda tanımsızdır:

  • dest boyutu gerekli boyuttan daha küçük.
  • dest ve src örtüşüyor.

wcsxfrm () Parametreler

  • dest: dönüştürülmüş geniş dizgenin depolandığı diziye işaretçi.
  • src: dönüştürülecek boş sonlandırılmış geniş dizgeye işaretçi.
  • count: dönüştürülecek maksimum geniş karakter sayısı.

wcsxfrm () Dönüş değeri

Wcsxfrm () işlevi, sonlandırıcı boş geniş karakter L ' 0' hariç, dönüştürülen geniş karakter sayısını döndürür.

Örnek: wcsxfrm () işlevi nasıl çalışır?

 #include #include #include using namespace std; int main() ( setlocale(LC_COLLATE, "cs_CZ.UTF-8"); const wchar_t* s1 = L"u0068u0072u006eu0065u0063"; const wchar_t* s2 = L"u0063u0068u0072u0074"; wchar_t t1(20), t2(20); cout << "wcscoll returned " << wcscoll(s1,s2) << endl; cout << "Before transformation, " << "wcscmp returned " << wcscmp(s1,s2) << endl; wcsxfrm(t1,s1,10); wcsxfrm(t2,s2,10); cout << "After transformation, " << "wcscmp returned " << wcscmp(t1,t2) << endl; return 0; )

Programı çalıştırdığınızda, çıktı:

 wcscoll -1 döndürdü Dönüşümden önce, wcscmp 1 döndürdü Dönüşümden sonra, wcscmp -1 döndürdü

Ilginç makaleler...