Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird das Format des Steuerelements an und erstellt für Operatoren einfügen Klassen besitzen.Der Operator (Einfüge-<<), der für alle Standard-C++-Datentypen vorprogrammiert wird, sendet der Bytes in einen Ausgabestream Objekt.Arbeiten mit vordefinierten Operatoren zum Einfügen von Manipulatoren „,“ werden die Elemente, die das Standardformat von ganzzahligen Arguments ändern.
Sie können das Format mit den folgenden Optionen steuern:
Ausgabe-Breite
Ausrichtung
Genauigkeit
Basis
Ausgabe-Breite
Um die Ausgabe auszurichten, geben Sie die Ausgabe für jedes Element in eine breite mithilfe des setw Manipulator im Stream ablegen oder indem Sie die width-Memberfunktion aufrufen.In diesem Beispiel RIGHT-richtet die Werte in einer Spalte mindestens 10 Zeichen breit aus:
// output_width.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main( )
{
double values[] = { 1.23, 35.36, 653.7, 4358.24 };
for( int i = 0; i < 4; i++ )
{
cout.width(10);
cout << values[i] << '\n';
}
}
Output
1.23
35.36
653.7
4358.24
Führende Nullen werden auf einen beliebigen Wert kürzer als 10 Zeichen breit hinzugefügt.
Um ein Feld zu füllen, verwenden Sie die fill-Memberfunktion, die den Wert des Füllzeichens für Felder festlegen die eine bestimmte Breite haben.Der Standardwert ist leer.Um die Spalte mit Zahlen mit Sternchen aufzufüllen, ändern Sie die vorherige nach Schleife wie folgt:
for( int i = 0; i < 4; i++ )
{
cout.width( 10 );
cout.fill( '*' );
cout << values[i] << endl;
}
Der endl Manipulator ersetzt das Zeilenumbruchzeichen ('\n').Die Ausgabe sieht wie folgt aus:
******1.23
*****35.36
*****653.7
***4358.24
Um Breite für Datenelemente in derselben Zeile anzugeben, verwenden Sie den setw Manipulator:
// setw.cpp
// compile with: /EHsc
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
double values[] = { 1.23, 35.36, 653.7, 4358.24 };
char *names[] = { "Zoot", "Jimmy", "Al", "Stan" };
for( int i = 0; i < 4; i++ )
cout << setw( 6 ) << names[i]
<< setw( 10 ) << values[i] << endl;
}
Output
Die width-Memberfunktion deklariert <iostream> ist.Wenn Sie setw oder einen anderen Manipulator mit Argumenten verwenden, müssen Sie einschließen <iomanip> .In der Ausgabe sind Zeichenfolgen in einem Feld der Breite 6 und ein ganzer Zahlen in einem Feld der Breite 10 ausgegeben:
Zoot 1.23
Jimmy 35.36
Al 653.7
Stan 4358.24
Weder setw entfernt noch width-Werte ab.Wenn formatierte Ausgabe die Breite überschreitet, wird der vollständige Wert abhängig von der Einstellung für die Genauigkeit des Streams.width und setw beeinflussen nur das folgende Feld.Feldbreite stellt zum Standardverhalten wieder her (die erforderliche Breite) nach einem Feld gedruckt wurde.Die Optionen für die anderen Stream bleibt wirksam, bis sich geändert.
Ausrichtung
Ausgabedatenströme führen zu rechtsbündigem Text.Um die Namen im vorherigen Beispiel belassene-auszurichten und die Zahlen RIGHT-auszurichten, ersetzen Sie die nach Schleife wie folgt:
for ( int i = 0; i < 4; i++ )
cout << setiosflags( ios::left )
<< setw( 6 ) << names[i]
<< resetiosflags( ios::left )
<< setw( 10 ) << values[i] << endl;
Die Ausgabe sieht wie folgt aus:
Zoot 1.23
Jimmy 35.36
Al 653.7
Stan 4358.24
Das Belassene auf Flag wird festgelegt, indem der setiosflags Manipulator mit dem links Enumerator verwendet.Dieser Enumerator wird in der IOS-Klasse definiert. Daher muss seinen Verweis IOS:: das Präfix enthalten.Der resetiosflags Manipulator stellt das Belassene auf Flag ab.Im Gegensatz zu width und setwist der Auswirkungen von setiosflags und resetiosflags permanent.
Genauigkeit
Der Standardwert für Float Genauigkeit ist sechs.Zum Beispiel gibt die Zahl 3466.9768 als 3466.98.Um die Methode zu ändern, wird dieser Wert bei der setprecision Manipulators.Der Manipulator verfügt über zwei Flags: fest und wissenschaftlich.Wenn fest festgelegt ist, wird die Zahl als 3466.976800.Wenn wissenschaftlich festgelegt ist, wird er als 3.4669773+003.
Um die Gleitkommazahlen anzuzeigen, die in Ausrichtung mit einer signifikanten Ziffer angezeigt werden, ersetzen Sie die nach Schleife wie folgt:
for ( int i = 0; i < 4; i++ )
cout << setiosflags( ios::left )
<< setw( 6 )
<< names[i]
<< resetiosflags( ios::left )
<< setw( 10 )
<< setprecision( 1 )
<< values[i]
<< endl;
Das Programm druckt diese Liste:
Zoot 1
Jimmy 4e+001
Al 7e+002
Stan 4e+003
Um die wissenschaftliche Notation zu vermeiden, fügen Sie diese Anweisung ein, bevor die nach Schleife:
cout << setiosflags( ios::fixed );
Arbeiten mit fester Notation gibt das Programm mit einer Ziffer nach dem Dezimalkomma.
Zoot 1.2
Jimmy 35.4
Al 653.7
Stan 4358.2
Wenn Sie das IOS::fest-Flag auf IOS::wissenschaftlichändern, werden die dieses Programms:
Zoot 1.2e+000
Jimmy 3.5e+001
Al 6.5e+002
Stan 4.4e+003
Auch hier gibt das Programm eine Ziffer nach dem Dezimalkomma.Wenn entweder IOS::fest oder IOS::wissenschaftlich festgelegt wird, bestimmt der Wert für die Genauigkeit der Anzahl der Ziffern nach dem Dezimaltrennzeichen.Wenn keines Flag festgelegt ist, bestimmt der Wert für die Genauigkeit der Gesamtzahl der signifikanten Stellen.Der resetiosflags Manipulator löscht diese Flags.
Basis
Dezember, octund hex Manipulatoren legen Sie die Basis für die Eingabe und Ausgabe fest.Wenn Sie beispielsweise den hex Manipulator in den Ausgabestream einfügen, übersetzt das Objekt ordnungsgemäß die interne Informationsdarstellung von ganzen Zahlen in ein hexadezimales Ausgabeformat.Die Zahlen werden mit Ziffern A bis f in Kleinbuchstaben angezeigt wird, wenn das Flag Großschreibung eindeutig ist (Standard). Andernfalls werden sie in Großbuchstaben angezeigt.Die Standardeinstellung ist die Basis Dezember (dezimal).