C ++ vswprintf () - Bibliothèque standard C ++

La fonction vswprintf () en C ++ est utilisée pour écrire une chaîne large formatée dans un tampon de chaîne large.

La fonction vswprintf () est définie dans le fichier d'en-tête.

prototype vswprintf ()

 int vswprintf (wchar_t * buffer, size_t buf_size, const wchar_t * format, va_list vlist);

La fonction vswprintf () écrit la chaîne large pointée par format dans le tampon de chaîne large. Un maximum de (buf_size-1)caractères larges est écrit dans la mémoire tampon qui est suivi d'un caractère large nul.

Le format de chaîne large peut contenir des spécificateurs de format commençant par% qui sont remplacés par les valeurs des variables qui sont passées sous forme de liste vlist.

Paramètres de vswprintf ()

  • buffer: pointeur vers un buffer de chaîne large pour écrire le résultat.
  • buf_size: nombre maximum de caractères larges à écrire, y compris le caractère large nul de fin.
  • format: pointeur vers une chaîne large terminée par null qui est écrite dans la mémoire tampon. Il se compose de caractères avec des spécificateurs de format facultatifs commençant par%. Les spécificateurs de format sont remplacés par les valeurs des variables respectives qui suivent le format.
    Le spécificateur de format comprend les parties suivantes:
    • Un signe% en tête
    • Indicateurs: un ou plusieurs indicateurs facultatifs qui modifient le comportement de conversion.
      • -: Justifiez à gauche le résultat dans le champ. Par défaut, il est justifié à droite.
      • +: Le signe du résultat est attaché au début de la valeur, même pour les résultats positifs.
      • Espace: s'il n'y a pas de signe, un espace est attaché au début du résultat.
      • #: Une autre forme de conversion est effectuée.
      • 0: Il est utilisé pour les nombres entiers et flottants. Les zéros non significatifs sont utilisés pour compléter les nombres au lieu de l'espace.
    • Largeur: valeur facultative * ou entière utilisée pour spécifier le champ de largeur minimale.
    • Précision: un champ facultatif composé d'un. suivi de * ou entier ou rien pour spécifier la précision.
    • Longueur: un modificateur de longueur facultatif qui spécifie la taille de l'argument.
    • Spécificateur: spécificateur de format de conversion. Les spécificateurs de format disponibles sont les suivants:
    Spécificateurs de format
    Spécificateur de format La description
    % Impressions%
    c Écrit un seul caractère
    s Écrit une chaîne de caractères
    d ou i Convertit un entier signé en représentation décimale
    o Convertit un entier non signé en représentation octale
    X ou x Convertit un entier non signé en représentation hexadécimale
    u Convertit un entier non signé en représentation décimale
    F ou f Convertit un nombre à virgule flottante en représentation décimale
    E ou e Convertit un nombre à virgule flottante en notation d'exposant décimal
    A ou a Convertit un nombre à virgule flottante en exposant hexadécimal
    G ou g Convertit un nombre à virgule flottante en notation d'exposant décimal ou décimal
    n Renvoie le nombre de caractères écrits jusqu'à présent par cet appel à la fonction. Le résultat est écrit sur la valeur pointée par l'argument
    p Écrit une séquence de caractères définie par l'implémentation définissant un pointeur.

    Ainsi, le format général du spécificateur de format est:
     Spécificateur% (flags) (width) (. precision) (length)
  • vlist: une liste d'arguments contenant les données à écrire.

vswprintf () Valeur de retour

  • En cas de succès, la fonction vswprintf () renvoie le nombre de caractères larges écrits à l'exclusion du caractère large nul de fin.
  • Une valeur négative est renvoyée si une erreur de codage se produit ou si le nombre de caractères à générer était égal ou supérieur à buf_size.

Exemple: comment fonctionne la fonction 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; )

Lorsque vous exécutez le programme, ce qui suit sera écrit dans example.txt:

 Lettres arabes: ڄ ڱ ڪ ڣ ڄ

Articles intéressants...