std:: wprintf, std:: fwprintf, std:: swprintf
|
Definiert in Header
<cwchar>
|
||
|
int
wprintf
(
const
wchar_t
*
format, ...
)
;
|
(1) | |
|
int
fwprintf
(
std::
FILE
*
stream,
const
wchar_t
*
format, ...
)
;
|
(2) | |
|
int
swprintf
(
wchar_t
*
buffer,
std::
size_t
size,
const
wchar_t
*
format, ...
)
;
|
(3) | |
Lädt die Daten von den angegebenen Speicherorten, konvertiert sie in entsprechende Breitzeichenketten und schreibt die Ergebnisse in verschiedene Senken.
Inhaltsverzeichnis |
Parameter
| stream | - | Ausgabedateistream, in den geschrieben wird |
| buffer | - | Zeiger auf eine Breitzeichen-Zeichenkette, in die geschrieben wird |
| size | - | bis zu size - 1 Zeichen können geschrieben werden, plus den Nullterminator |
| format | - | Zeiger auf eine nullterminierte Breitzeichen-Zeichenkette, die angibt, wie die Daten zu interpretieren sind |
| ... | - | Argumente, die die auszugebenden Daten spezifizieren. Wenn ein Argument nach Standardkonvertierungen nicht dem vom entsprechenden Konvertierungsspezifizierer erwarteten Typ entspricht, oder wenn weniger Argumente vorhanden sind als von format benötigt, ist das Verhalten undefiniert. Wenn mehr Argumente vorhanden sind als von format benötigt, werden die überzähligen Argumente ausgewertet und ignoriert |
Der
Format
-String besteht aus gewöhnlichen Breitzeichen (außer
%
), die unverändert in den Ausgabestrom kopiert werden, und Konvertierungsspezifikationen. Jede Konvertierungsspezifikation hat folgendes Format:
-
-
Einleitendes
%Zeichen.
-
Einleitendes
-
- (optional) ein oder mehrere Flags, die das Verhalten der Konvertierung modifizieren:
-
-
-: Das Ergebnis der Konvertierung wird innerhalb des Feldes linksbündig ausgerichtet (standardmäßig ist es rechtsbündig). -
+: Das Vorzeichen von vorzeichenbehafteten Konvertierungen wird immer dem Ergebnis vorangestellt (standardmäßig wird das Ergebnis nur dann mit einem Minus versehen, wenn es negativ ist). -
space
: Wenn das Ergebnis einer vorzeichenbehafteten Konvertierung nicht mit einem Vorzeichen beginnt oder leer ist, wird dem Ergebnis ein Leerzeichen vorangestellt. Es wird ignoriert, wenn das
+-Flag vorhanden ist. -
#: Die alternative Form der Konvertierung wird durchgeführt. Siehe die nachfolgende Tabelle für genaue Auswirkungen, andernfalls ist das Verhalten undefiniert. -
0: Für Ganzzahl- und Gleitkommazahl-Konvertierungen werden führende Nullen verwendet, um das Feld aufzufüllen, anstatt space -Zeichen. Für Ganzzahlen wird es ignoriert, wenn die Genauigkeit explizit angegeben ist. Für andere Konvertierungen führt die Verwendung dieses Flags zu undefiniertem Verhalten. Es wird ignoriert, wenn das--Flag vorhanden ist.
-
-
-
(optional)
Ganzzahlwert oder
*, der die minimale Feldbreite angibt. Das Ergebnis wird bei Bedarf links (bei rechtsbündiger Ausrichtung) oder rechts (bei linksbündiger Ausrichtung) mit Leerzeichen aufgefüllt (standardmäßig). Falls*verwendet wird, wird die Breite durch ein zusätzliches Argument vom Typ int angegeben, das vor dem zu konvertierenden Argument und dem die Genauigkeit liefernden Argument (falls vorhanden) erscheint. Wenn der Wert des Arguments negativ ist, führt dies zur Angabe des-Flags und einer positiven Feldbreite (Hinweis: Dies ist die minimale Breite: Der Wert wird niemals abgeschnitten.).
-
(optional)
Ganzzahlwert oder
-
-
(optional)
.gefolgt von einer Ganzzahl oder*, oder keines von beiden, was die Präzision der Konvertierung angibt. Falls*verwendet wird, wird die Präzision durch ein zusätzliches Argument vom Typ int spezifiziert, das vor dem zu konvertierenden Argument erscheint, aber nach dem Argument, das die minimale Feldbreite angibt, falls eines angegeben wurde. Wenn der Wert dieses Arguments negativ ist, wird er ignoriert. Wenn weder eine Zahl noch*verwendet wird, wird die Präzision als Null angenommen. Siehe die nachfolgende Tabelle für die genauen Auswirkungen der Präzision .
-
(optional)
-
- (optional) Längenmodifikator der die Größe des Arguments spezifiziert (in Kombination mit dem Konvertierungsformat-Spezifizierer spezifiziert er den Typ des entsprechenden Arguments).
-
- Konvertierungsformatbezeichner.
Die folgenden Formatbezeichner sind verfügbar:
|
Konvertierung
Spezifizierer |
Erklärung |
Erwarteter
Argumenttyp |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Längenmodifikator→ | hh | h | keine | l | ll | j | z | t | L | |
| Nur verfügbar seit C++11→ | Ja | Ja | Ja | Ja | Ja | |||||
%
|
Schreibt ein literales
%
. Die vollständige Konvertierungsspezifikation muss
%%
lauten.
|
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
Schreibt ein einzelnes Zeichen .
|
N/A | N/A |
int
|
std::wint_t
|
N/A | N/A | N/A | N/A | N/A |
s
|
Schreibt eine Zeichenkette .
|
N/A | N/A |
char
*
|
wchar_t
*
|
N/A | N/A | N/A | N/A | N/A |
d
i
|
Wandelt eine vorzeichenbehaftete Ganzzahl in die Dezimaldarstellung [-]dddd um.
|
signed
char
|
short
|
int
|
long
|
long
long
|
※
|
N/A | ||
o
|
Wandelt eine vorzeichenlose Ganzzahl in die Oktaldarstellung oooo um.
|
unsigned
char
|
unsigned
short
|
unsigned
int
|
unsigned
long
|
unsigned
long
long
|
vorzeichenlose Version von
std::ptrdiff_t
|
N/A | ||
x
X
|
Wandelt eine vorzeichenlose Ganzzahl in die hexadezimale Darstellung hhhh um.
|
N/A | ||||||||
u
|
Wandelt eine unsigned integer in die Dezimaldarstellung dddd um.
|
N/A | ||||||||
f
F
(C++11)
|
Konvertiert eine Gleitkommazahl in die Dezimalschreibweise im Format [-]ddd.ddd .
|
N/A | N/A |
double
|
double
(C++11)
|
N/A | N/A | N/A | N/A |
long
double
|
e
E
|
Wandelt eine Gleitkommazahl in die dezimale Exponentenschreibweise um.
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
a
A
(C++11) |
Konvertiert Gleitkommazahlen in die hexadezimale Exponentenschreibweise.
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
g
G
|
Wandelt eine Gleitkommazahl in Dezimal- oder Exponentenschreibweise um, abhängig vom Wert und der Genauigkeit .
|
N/A | N/A | N/A | N/A | N/A | N/A | |||
n
|
Gibt die Anzahl der bisher geschriebenen Zeichen durch diesen Funktionsaufruf zurück.
|
signed
char
*
|
short
*
|
int
*
|
long
*
|
long
long
*
|
※
|
N/A | ||
p
|
Schreibt eine implementierungsdefinierte Zeichenfolge, die einen Zeiger definiert. |
N/A | N/A |
void
*
|
N/A | N/A | N/A | N/A | N/A | N/A |
| Hinweise | ||||||||||
|
Die Gleitkomma-Konvertierungsfunktionen konvertieren Unendlich zu
Keine-Zahl wird zu
Die Konvertierungen
Der Konvertierungsspezifizierer zum Drucken von char , unsigned char , signed char , short und unsigned short erwartet gepromotete Typen von Standardargument-Promotions , aber vor dem Drucken wird sein Wert zu char , unsigned char , signed char , short und unsigned short konvertiert. Es ist sicher, Werte dieser Typen zu übergeben, aufgrund der Promotion, die beim Aufruf einer variadischen Funktion stattfindet.
Die korrekten Konvertierungsspezifikationen für die festbreitigen Zeichentypen (
std::int8_t
usw.) sind im Header
<cinttypes>
definiert (obwohl
PRIdMAX
,
PRIuMAX
usw. synonym mit
Der speicher-schreibende Konvertierungsspezifizierer
Es gibt einen
Sequenzpunkt
nach der Aktion jedes Konvertierungsspezifizierers; dies ermöglicht das Speichern mehrerer
Wenn eine Konvertierungsspezifikation ungültig ist, ist das Verhalten undefiniert. |
||||||||||
Rückgabewert
Hinweise
Während schmale Zeichenketten
std::snprintf
bereitstellen, was die Bestimmung der erforderlichen Ausgabepuffergröße ermöglicht, gibt es kein Äquivalent für breite Zeichenketten, und um die Puffergröße zu bestimmen, muss das Programm möglicherweise
std::swprintf
aufrufen, den Rückgabewert prüfen und einen größeren Puffer neu zuweisen, um es erneut zu versuchen, bis es erfolgreich ist.
Beispiel
#include <clocale> #include <cwchar> #include <iostream> #include <locale> int main() { char narrow_str[] = "z\u00df\u6c34\U0001f34c"; // or "zß水🍌"; // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t warr[29]; // the expected string is 28 characters plus 1 null terminator std::setlocale(LC_ALL, "en_US.utf8"); std::swprintf(warr, sizeof warr/sizeof *warr, L"Converted from UTF-8: '%s'", narrow_str); std::wcout.imbue(std::locale("en_US.utf8")); std::wcout << warr << '\n'; }
Ausgabe:
Converted from UTF-8: 'zß水🍌'
Siehe auch
|
(C++11)
|
gibt formatierten Output an
stdout
, einen Dateistrom oder einen Puffer aus
(Funktion) |
|
gibt formatierten Breitzeichen-Output an
stdout
, einen Dateistrom
oder einen Puffer unter Verwendung einer variablen Argumentenliste aus (Funktion) |
|
|
schreibt eine breite Zeichenkette in einen Dateistrom
(Funktion) |
|
|
C-Dokumentation
für
wprintf
,
fwprintf
,
swprintf
|
|