Freigeben über


num_put::do_put

Eine virtuelle Funktion, die aufgerufen wird, um eine Zahl in eine Sequenz von CharTypes zu konvertieren, die die Zahl darstellt, formatiertes für ein bestimmtes Gebietsschema.

virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    bool _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    long _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    unsigned long _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    double _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    long double _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    const void * _Val
) const;
virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    const long long _Val
) const; virtual iter_type do_put(
    iter_type _Dest,
    ios_base& _Iosbase,
    _Elem _Fill,
    const unsigned long long _Val
) const;

Parameter

  • _Next
    Ein Iterator, der das erste Element der eingefügten Zeichenfolge behandelt.

  • _Iosbase
    Gab dem Stream, der mit dem Gebietsschema numpunct Aspekt enthält, das verwendet wird, um die Ausgabe zu interpunktieren und zum Formatieren der Ausgabe kennzeichnet.

  • _Fill
    Ein Zeichen, das für den Abstand verwendet wird.

  • _Val
    Die Zahl oder der boolesche Typ, der übergeben werden soll.

Rückgabewert

Ein Ausgabeiterator die Adressen, die die Position eine über den letzten Eintrag hinaus hat.

Hinweise

Die erste geschützte virtuelle Memberfunktion generiert die sequenziellen Elemente, die bei _Next beginnen, um ein Ausgabefeld der ganze Zahl vom Wert von _Val zu erstellen. Die Funktion gibt ein Iterator zurück, der den folgenden Ort festgelegt werden, um ein Element über dem generierten Ausgabefeld die Ganzzahl hinaus einzufügen.

Das Ausgabefeld die Ganzzahl wird durch die gleichen Regeln generiert, die von der Druck zum Generieren von char-Elemente in einer Datei verwendet werden. Die einzelnen charelement wird angenommen, um zu einem entsprechenden Element des Typs CharType zuzuordnen über eine einfache Eins-zu-Eins-Zuordnung., Wo eine Druckfunktion ein Feld mit entweder leer gefüllt wird, oder die Ziffer 0 hingegen verwendet do_put stattdessen fill. Die entsprechende DrucksUmwandlungsangabe wird bestimmt, wie folgt:

  • Wenn iosbase. == &ios_base::OktFlagsios_base::basefield, die Umwandlungsangabe ist lo.

  • Wenn == &ios_base::Hexadezimaliosbase.flagsios_base::basefield, die Umwandlungsangabe lx ist.

  • Andernfalls ist die Umwandlungsangabe ld.

Wenn iosbase.Breite ist, eine Feldbreite dieses Werts wird vorangestellt ungleich 0. Die Funktion ruft dann iosbase auf.width(0) zu der Feldbreite auf null zurückgesetzt.

Textabstände tritt nur auf, wenn die Mindestanzahl von Elementen benötigt, N das Ausgabefeld anzugeben kleiner als iosbase.Breite. Solche Abstand besteht aus einer Sequenz von nwidth - aus Kopien von fill. Anschließend füllen tritt auf, wie folgt:

  • Wenn iosbase. == ios_base::linksios_base::adjustfield,flags & das Flag vorangestellt wird. (Innenabstand tritt auf, nachdem der generierte Text.)

  • Wenn == &ios_base::internaliosbase.flagsios_base::adjustfield, das Flag 0 vorangestellt wird. (Ein numerisches Ausgabefeld, wird das Füllen auf, wobei die Druckfunktionsauflage mit 0.)

  • Andernfalls wird ein zusätzliches Flag vorangestellt. (Innenabstand tritt auf, bevor die generierte Sequenz.)

Schließlich:

  • Wenn iosbase.flags &ios_base::showpos ist, das Flag + vorangestellt wird zur Umwandlungsangabe ungleich 0.

  • Wenn iosbase.flags & ios_base::showbase ist, das Flag # vorangestellt wird zur Umwandlungsangabe ungleich 0.

Das Format eines Ausgabefelds die Ganzzahl ist durch Gebietsschemafacet fac weiter entschlossenes, das durch den Aufruf use_facet <numpunct<Elem>zurückgegebene (iosbase.getloc). Dies gilt insbesondere in folgenden Fällen:

  • fac.Gruppieren bestimmt, wie Ziffern auf der linken Seite eines Dezimaltrennzeichens gruppiert werden

  • fac.thousands_sep bestimmt die Reihenfolge, die Zahlengruppen auf der linken Seite eines Dezimaltrennzeichens trennt

Wenn keine Gruppenspalten Einschränkungen durch fac gelten.Gruppierung (erstes Element hat den Wert CHAR_MAX), anschließend keine Instanzen von fac.thousands_sep werden auf dem Ausgabegebiet generiert. Andernfalls werden Trennzeichen eingefügt, nachdem die Druckkonvertierung auftritt.

Die zweite geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, unsigned long _Val) const;

verhält sich weitgehend wie das erste, allerdings wird ersetzt eine Umwandlungsangabe von ld durch lu.

Die dritte geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, double _Val) const;

verhält sich weitgehend wie das erste, es wird ein Gleitkommaausgabefeld vom Wert val.fac.decimal_point bestimmt die Reihenfolge, die die ganzzahligen Ziffern von den Bruchsziffern trennt. Die entsprechende DrucksUmwandlungsangabe wird bestimmt, wie folgt:

  • Wenn iosbase. == &ios_base::festflagsios_base::floatfield, die Umwandlungsangabe ist lf.

  • Wenn iosbase. == &ios_base::wissenschaftlichflagsios_base::floatfield, die Umwandlungsangabe ist le. Wenn iosbase.flags &ios_base::Großbuchstaben ist, wird e ersetzt durch E ungleich 0.

  • Andernfalls ist die Umwandlungsangabe lg. Wenn iosbase.flags &ios_base::uppercase, g ersetzt durch G ungleich 0.

Wenn iosbase.flags &ios_base::fixed ist oder wenn iosbase nicht 0 (null).Genauigkeit ist größer, eine Genauigkeit mit dem Wert iosbase.precision wird der Umwandlungsangabe vorangestellt. Jede Innenabstand verhält sich genauso wie für ein Ausgabefeld der ganze Zahl. Als Auffüllzeichen ist fill. Schließlich:

  • Wenn iosbase.flags &ios_base::showpos ist, das Flag + vorangestellt wird zur Umwandlungsangabe ungleich 0.

  • Wenn iosbase.flags &ios_base::showpoint ist, das Flag # vorangestellt wird zur Umwandlungsangabe ungleich 0.

Die vierte geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, long double _Val) const;

verhält sich weitgehend das dritte, dass der Qualifizierer L in der Umwandlungsangabe wird durch L ersetzt.

Die fünfte geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, const void *_Val) const;

verhält sich weitgehend das erste, dass die Umwandlungsangabe ist p**,** plus jeden Qualifizierer, der benötigt wird, um den Innenabstand anzugeben.

Die 6. geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
    CharType _Fill, bool _Val) const;

verhält sich weitgehend wie das erste, es generiert ein Ausgabefeld des booleschen Wert von _Val.

Ein Ausgabefeld des booleschen nimmt eines von zwei Formulare. Wenn iosbase.flags &ios_base::boolalpha ist false, die Memberfunktionsrückgaben do_put(_Next, _Iosbase, _Fill,long) (_Val), das in der Regel einer generierten Sequenz entweder von 0 (bei false) oder von 1 erzeugt (bei true). Andernfalls ist die generierte Sequenz jedes fac.falsename) (bei false) oder fac.truename (bei true).

Die 7. geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type next, ios_base& iosbase,
    Elem fill, long long val) const; 

verhält sich weitgehend wie das erste, allerdings wird ersetzt eine Umwandlungsangabe von ld durch lld.

Die achte geschützte virtuelle Memberfunktion:

virtual iter_type do_put(iter_type next, ios_base& iosbase,
    Elem fill, unsigned long long val) const; 

verhält sich weitgehend wie das erste, allerdings wird ersetzt eine Umwandlungsangabe von ld durch llu.

Beispiel

Im Beispiel für Pufferüberlauf, die do_put aufruft.

Anforderungen

Gebietsschema Header: <>

Namespace: std

Siehe auch

Referenz

num_put-Klasse