C ++ vswprintf () - C ++ Standardbibliothek

Die Funktion vswprintf () in C ++ wird verwendet, um eine formatierte breite Zeichenfolge in einen breiten Zeichenfolgenpuffer zu schreiben.

Die Funktion vswprintf () ist in der Header-Datei definiert.

vswprintf () Prototyp

 int vswprintf (wchar_t * -Puffer, size_t buf_size, const wchar_t * -Format, va_list vlist);

Die Funktion vswprintf () schreibt die breite Zeichenfolge, auf die das Format zeigt, in den Puffer für breite Zeichenfolgen. Es werden maximal (buf_size-1)breite Zeichen in den Puffer geschrieben, gefolgt von einem null breiten Zeichen.

Das breite Zeichenfolgenformat kann Formatspezifizierer enthalten, die mit% beginnen und durch die Werte von Variablen ersetzt werden, die als Listen-vlist übergeben werden.

vswprintf () Parameter

  • buffer: Zeiger auf einen breiten String-Puffer, um das Ergebnis zu schreiben.
  • buf_size: Maximale Anzahl der zu schreibenden breiten Zeichen, einschließlich des abschließenden null breiten Zeichens.
  • Format: Ein Zeiger auf eine nullterminierte breite Zeichenfolge, die in den Puffer geschrieben wird. Es besteht aus Zeichen und optionalen Formatangaben, die mit% beginnen. Die Formatbezeichner werden durch die Werte der jeweiligen Variablen ersetzt, die dem Format folgen.
    Der Formatbezeichner besteht aus folgenden Teilen:
    • Ein führendes% -Zeichen
    • Flags: Optional ein oder mehrere Flags, die das Konvertierungsverhalten ändern.
      • -: Links begründen Sie das Ergebnis innerhalb des Feldes. Standardmäßig ist es richtig gerechtfertigt.
      • +: Das Vorzeichen des Ergebnisses wird auch bei positiven Ergebnissen an den Anfang des Wertes angehängt.
      • Leerzeichen: Wenn kein Zeichen vorhanden ist, wird am Anfang des Ergebnisses ein Leerzeichen eingefügt.
      • #: Eine alternative Form der Konvertierung wird durchgeführt.
      • 0: Wird für Ganzzahl und Gleitkommazahl verwendet. Führende Nullen werden verwendet, um die Zahlen anstelle von Leerzeichen aufzufüllen.
    • Breite: Ein optionaler * oder ganzzahliger Wert, mit dem das Feld für die Mindestbreite angegeben wird.
    • Präzision: Ein optionales Feld bestehend aus a. gefolgt von * oder Ganzzahl oder nichts, um die Genauigkeit anzugeben.
    • Länge: Ein optionaler Längenmodifikator, der die Größe des Arguments angibt.
    • Bezeichner: Ein Bezeichner für das Konvertierungsformat. Die verfügbaren Formatspezifizierer sind wie folgt:
    Formatbezeichner
    Formatbezeichner Beschreibung
    %. Druckt%
    c Schreibt ein einzelnes Zeichen
    s Schreibt eine Zeichenkette
    d oder i Konvertiert eine vorzeichenbehaftete Ganzzahl in eine Dezimaldarstellung
    Ö Konvertiert eine vorzeichenlose Ganzzahl in eine oktale Darstellung
    X oder x Konvertiert eine vorzeichenlose Ganzzahl in eine hexadezimale Darstellung
    u Konvertiert eine vorzeichenlose Ganzzahl in eine Dezimaldarstellung
    F oder f Konvertiert die Gleitkommazahl in die Dezimaldarstellung
    E oder e Konvertiert die Gleitkommazahl in die Dezimal-Exponenten-Notation
    A oder a Konvertiert die Gleitkommazahl in den hexadezimalen Exponenten
    G oder g Konvertiert die Gleitkommazahl entweder in eine dezimale oder eine dezimale Exponentennotation
    n Gibt die Anzahl der Zeichen zurück, die bisher von diesem Aufruf an die Funktion geschrieben wurden. Das Ergebnis wird auf den Wert geschrieben, auf den das Argument zeigt
    p Schreibt eine implementierungsdefinierte Zeichenfolge, die einen Zeiger definiert.

    Das allgemeine Format des Formatbezeichners lautet also:
     Bezeichner% (Flags) (Breite) (. Genauigkeit) (Länge)
  • vlist: Eine Liste von Argumenten, die die zu schreibenden Daten enthalten.

vswprintf () Rückgabewert

  • Bei Erfolg gibt die Funktion vswprintf () die Anzahl der geschriebenen breiten Zeichen ohne das abschließende null breite Zeichen zurück.
  • Ein negativer Wert wird zurückgegeben, wenn ein Codierungsfehler auftritt oder wenn die Anzahl der zu generierenden Zeichen gleich oder größer als buf_size war.

Beispiel: Wie funktioniert die Funktion vswprintf ()?

 #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; )

Wenn Sie das Programm ausführen, wird Folgendes in example.txt geschrieben:

 Arabische Buchstaben: ڄ ڱ ڪ ڣ ڄ

Interessante Beiträge...