C ++ swprintf () - biblioteka standardowa C ++

Funkcja swprintf () w C ++ służy do zapisywania sformatowanego szerokiego ciągu w buforze szerokich ciągów.

Funkcja swprintf () jest zdefiniowana w pliku nagłówkowym.

prototyp swprintf ()

 int swprintf (wchar_t * bufor, rozmiar_t rozmiar, format const wchar_t *,…);

Funkcja swprintf () zapisuje szeroki ciąg wskazywany przez format do bufora. Maksymalna liczba znaków, które można zapisać, to (rozmiar-1).

Po zapisaniu znaków dodawany jest kończący znak o zerowej szerokości.

Format szerokiego ciągu może zawierać specyfikatory formatu zaczynające się od%, które są zastępowane przez wartości zmiennych, które są przekazywane do funkcji swprintf () jako dodatkowe argumenty.

swprintf () Parametry

  • bufor: wskaźnik do bufora ciągu, aby zapisać wynik.
  • rozmiar: Określ maksymalną liczbę znaków do zapisania w buforze o rozmiarze 1.
  • format: wskaźnik do szerokiego ciągu zakończonego znakiem null, który jest zapisywany na standardowe wyjście. Składa się z szerokich znaków wraz z opcjonalnymi specyfikatorami formatu zaczynającymi się od%. Specyfikatory formatu są zastępowane wartościami odpowiednich zmiennych następujących po formacie.
    Specyfikator formatu składa się z następujących części:
    • Wiodący znak%
    • Flagi: opcjonalnie jedna lub więcej flag, które modyfikują zachowanie konwersji.
      • -: Wyrównaj wynik do lewej w polu. Domyślnie jest wyjustowany do prawej.
      • +: Znak wyniku jest dołączany na początku wartości, nawet w przypadku wyników dodatnich.
      • Spacja: jeśli nie ma znaku, na początku wyniku jest umieszczana spacja.
      • #: Wykonywana jest alternatywna forma konwersji.
      • 0: jest używany do liczb całkowitych i zmiennoprzecinkowych. Zera wiodące służą do wypełniania liczb zamiast spacji.
    • Szerokość: opcjonalna * lub wartość całkowita używana do określenia pola o minimalnej szerokości.
    • Precyzja: opcjonalne pole składające się z. po którym następuje * lub liczba całkowita lub nic, aby określić dokładność.
    • Długość: opcjonalny modyfikator długości, który określa rozmiar argumentu.
    • Specifier: specyfikator formatu konwersji. Dostępne specyfikatory formatu są następujące:
    Specyfikatory formatu
    Specyfikator formatu Opis
    % Drukuje%
    do Zapisuje pojedynczy znak
    s Zapisuje ciąg znaków
    d lub i Konwertuje liczbę całkowitą ze znakiem na reprezentację dziesiętną
    o Konwertuje liczbę całkowitą bez znaku na reprezentację ósemkową
    X lub x Konwertuje liczbę całkowitą bez znaku na reprezentację szesnastkową
    u Konwertuje liczbę całkowitą bez znaku na reprezentację dziesiętną
    F lub f Konwertuje liczbę zmiennoprzecinkową na reprezentację dziesiętną
    E lub e Konwertuje liczbę zmiennoprzecinkową na dziesiętną notację wykładniczą
    A lub a Konwertuje liczbę zmiennoprzecinkową na wykładnik szesnastkowy
    G lub g Konwertuje liczbę zmiennoprzecinkową na dziesiętną lub dziesiętną notację wykładniczą
    n Zwraca liczbę znaków zapisanych do tej pory przez to wywołanie funkcji. Wynik jest zapisywany do wartości wskazywanej przez argument
    p Zapisuje sekwencję znaków zdefiniowaną w implementacji definiującą wskaźnik.

    Zatem ogólny format specyfikatora formatu to:
     % (flagi) (szerokość) (. precyzja) (długość)
  • …: Inne dodatkowe argumenty określające dane do zapisania. Występują w sekwencji zgodnie ze specyfikatorem formatu.

swprintf () Zwracana wartość

  • Po pomyślnym zakończeniu funkcja swprintf () zwraca liczbę zapisanych znaków z wyłączeniem kończącego znaku o szerokości null.
  • Jeśli wystąpił błąd kodowania lub jeśli liczba znaków do wygenerowania była równa lub większa niż rozmiar, zwracana jest wartość ujemna.

Przykład: Jak działa funkcja 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; )

Po uruchomieniu programu w pliku example.txt zostanie zapisany:

 Niektóre litery hebrajskie א ב ס ד ת

Interesujące artykuły...