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

C ++ 'daki vswprintf () işlevi, geniş bir dizge arabelleğine biçimlendirilmiş bir geniş dize yazmak için kullanılır.

Vswprintf () işlevi başlık dosyasında tanımlanmıştır.

vswprintf () prototipi

 int vswprintf (wchar_t * arabellek, size_t buf_size, const wchar_t * biçimi, va_list vlist);

Vswprintf () işlevi, biçimiyle gösterilen geniş dizeyi geniş dizge arabelleğine yazar. (buf_size-1)Arabelleğe maksimum geniş karakter yazılır ve bunu boş geniş karakter izler.

Geniş dize biçimi,% ile başlayan ve bir liste vlist olarak iletilen değişkenlerin değerleri ile değiştirilen biçim belirleyicileri içerebilir.

vswprintf () Parametreler

  • arabellek: Sonucu yazmak için geniş bir dize arabelleğine işaretçi.
  • buf_size: Sonlandırıcı boş geniş karakter dahil, yazılacak maksimum geniş karakter sayısı.
  • format: Arabelleğe yazılan boş sonlandırılmış bir geniş dizgeye işaretçi. % İle başlayan isteğe bağlı biçim belirleyicileriyle birlikte karakterlerden oluşur. Biçim belirleyicileri, biçimi izleyen ilgili değişkenlerin değerleriyle değiştirilir.
    Biçim belirticisi aşağıdaki bölümlerden oluşur:
    • Önde gelen% işareti
    • Bayraklar: Dönüştürme davranışını değiştiren isteğe bağlı bir veya daha fazla bayrak.
      • -: Sonucu alan içinde sola yaslayın. Varsayılan olarak doğru şekilde yaslanmıştır.
      • +: Olumlu sonuçlar için bile sonucun işareti değerin başına eklenir.
      • Boşluk: İşaret yoksa sonucun başına bir boşluk eklenir.
      • #: Dönüşümün alternatif bir biçimi gerçekleştirilir.
      • 0: Tam sayı ve kayan nokta sayısı için kullanılır. Sayıları boşluk yerine doldurmak için baştaki sıfırlar kullanılır.
    • Genişlik: Minimum genişlik alanını belirtmek için kullanılan isteğe bağlı bir * veya tamsayı değeri.
    • Kesinlik: a. ardından * veya tamsayı veya hassasiyeti belirtmek için hiçbir şey gelmez.
    • Uzunluk: Bağımsız değişkenin boyutunu belirten isteğe bağlı bir uzunluk değiştirici.
    • Specifier: Bir dönüşüm formatı belirleyicisi. Kullanılabilir biçim belirleyicileri aşağıdaki gibidir:
    Biçim belirleyicileri
    Biçim Tanımlayıcısı Açıklama
    % Baskılar%
    c Tek bir karakter yazar
    s Bir karakter dizisi yazar
    d veya ben İşaretli bir tamsayıyı ondalık gösterime dönüştürür
    Ö İşaretsiz bir tamsayıyı sekizlik gösterime dönüştürür
    X veya x İşaretsiz bir tamsayıyı onaltılık gösterime dönüştürür
    sen İşaretsiz bir tamsayıyı ondalık gösterime dönüştürür
    F veya f Kayan nokta sayısını ondalık gösterime dönüştürür
    E veya e Kayan nokta sayısını ondalık üslü gösterime dönüştürür
    A veya a Kayan nokta sayısını onaltılı üsse dönüştürür
    G veya g Kayan noktalı sayıyı ondalık veya ondalık üslü gösterime dönüştürür
    n Bu çağrı tarafından o ana kadar yazılan karakter sayısını işleve döndürür. Sonuç, bağımsız değişken tarafından gösterilen değere yazılır
    p Bir işaretçi tanımlayan bir uygulama tanımlı karakter dizisi yazar.

    Dolayısıyla, biçim belirticisinin genel biçimi şöyledir:
     % (bayraklar) (genişlik) (. duyarlık) (uzunluk) belirteci
  • vlist: Yazılacak verileri içeren bağımsız değişkenlerin listesi.

vswprintf () Dönüş değeri

  • Başarılı olursa, vswprintf () işlevi sonlandırıcı boş geniş karakter hariç yazılan geniş karakterlerin sayısını döndürür.
  • Herhangi bir kodlama hatası meydana gelirse veya oluşturulacak karakter sayısı buf_size değerine eşit veya ondan büyükse negatif bir değer döndürülür.

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

 #include #include #include void write(wchar_t* buffer, size_t buf_size, const wchar_t *fmt,… ) ( va_list args; va_start(args, fmt); vswprintf(buffer, buf_size, fmt, args); va_end(args); ) int main () ( wchar_t str() = L"u0684 u06b1 u06aa u06a3 u0684"; wchar_t buffer(50); setlocale(LC_ALL, "en_US.UTF-8"); write(buffer, 50, L"Arabic Letters: %ls", str); wprintf(L"%ls", buffer); return 0; )

Programı çalıştırdığınızda, aşağıdakiler example.txt dosyasına yazılacaktır:

 Arap Harfleri: ڄ ڱ ڪ ڣ ڄ

Ilginç makaleler...