C ++ swprintf () - Libreria standard C ++

La funzione swprintf () in C ++ viene utilizzata per scrivere una stringa larga formattata in un buffer di stringa ampia.

La funzione swprintf () è definita nel file di intestazione.

prototipo swprintf ()

 int swprintf (wchar_t * buffer, size_t size, const wchar_t * formato,…);

La funzione swprintf () scrive la stringa ampia a cui punta il formato nel buffer. Il numero massimo di caratteri che è possibile scrivere è (dimensione-1).

Dopo che i caratteri sono stati scritti, viene aggiunto un carattere di terminazione null wide.

Il formato stringa ampia può contenere identificatori di formato che iniziano con% che vengono sostituiti dai valori delle variabili che vengono passati alla funzione swprintf () come argomenti aggiuntivi.

Parametri swprintf ()

  • buffer: puntatore al buffer di stringa per scrivere il risultato.
  • size: specifica il numero massimo di caratteri da scrivere nel buffer che è size-1.
  • format: un puntatore a una stringa ampia terminata da null che viene scritta in stdout. Consiste di caratteri larghi insieme a identificatori di formato opzionali che iniziano con%. Gli identificatori di formato vengono sostituiti dai valori delle rispettive variabili che seguono il formato.
    L'identificatore di formato ha le seguenti parti:
    • Un segno di% iniziale
    • Flag: uno o più flag opzionali che modificano il comportamento di conversione.
      • -: Giustifica a sinistra il risultato all'interno del campo. Per impostazione predefinita è giustificato a destra.
      • +: Il segno del risultato viene aggiunto all'inizio del valore, anche in caso di risultati positivi.
      • Spazio: se non è presente alcun segno, viene aggiunto uno spazio all'inizio del risultato.
      • #: Viene eseguita una forma alternativa di conversione.
      • 0: viene utilizzato per numeri interi e in virgola mobile. Gli zeri iniziali vengono utilizzati per riempire i numeri anziché lo spazio.
    • Larghezza: un valore intero * o facoltativo utilizzato per specificare il campo di larghezza minima.
    • Precisione: un campo opzionale costituito da un file. seguito da * o intero o niente per specificare la precisione.
    • Lunghezza: un modificatore di lunghezza opzionale che specifica la dimensione dell'argomento.
    • Specifier: un identificatore del formato di conversione. Gli identificatori di formato disponibili sono i seguenti:
    Identificatori di formato
    Identificatore di formato Descrizione
    % Stampe%
    c Scrive un singolo carattere
    S Scrive una stringa di caratteri
    do i Converte un intero con segno in una rappresentazione decimale
    o Converte un intero senza segno in una rappresentazione ottale
    X o x Converte un intero senza segno in una rappresentazione esadecimale
    u Converte un intero senza segno in una rappresentazione decimale
    F o f Converte il numero a virgola mobile nella rappresentazione decimale
    E o e Converte il numero a virgola mobile nella notazione esponente decimale
    A o a Converte il numero a virgola mobile nell'esponente esadecimale
    G o g Converte il numero a virgola mobile in notazione esponente decimale o decimale
    n Restituisce il numero di caratteri scritti finora da questa chiamata alla funzione. Il risultato viene scritto nel valore puntato dall'argomento
    p Scrive una sequenza di caratteri definita dall'implementazione che definisce un puntatore.

    Quindi il formato generale dell'identificatore di formato è:
     Identificatore% (flag) (larghezza) (. precisione) (lunghezza)
  • …: Altri argomenti aggiuntivi che specificano i dati da scrivere. Si verificano in una sequenza in base all'identificatore di formato.

swprintf () Restituisce il valore

  • In caso di esito positivo, la funzione swprintf () restituisce il numero di caratteri scritti escluso il carattere null wide di terminazione.
  • Se si è verificato un errore di codifica o se il numero di caratteri da generare era uguale o maggiore della dimensione, viene restituito un valore negativo.

Esempio: come funziona la funzione swprintf ()?

 #include #include #include #include using namespace std; int main() ( wchar_t hebrew_str() = L"u05D0 u05D1 u05E1 u05D3 u05EA"; wchar_t buffer(100); setlocale(LC_ALL, "en_US.UTF-8"); swprintf(buffer, sizeof(hebrew_str), L"%ls", hebrew_str); wcout << L"Some hebrew letters" << buffer << endl; return 0; )

Quando esegui il programma, verrà scritto quanto segue in example.txt:

 Alcune lettere ebraiche א ב ס ד ת

Articoli interessanti...