[Home]
für Einsteiger!
Seite:  [1] - Drucken

Inhalt:


Formatierte Ausgaben

Um Ausgaben mit "cout" ein wenig zu formatieren, gibt es eine weitere Erweiterung, die Datei "<iomanip>". Also einfach direkt unter "iostream" einbinden! Nun können wir mit den folgenden Kommandos die Ausgabe beeinflussen:
Wie? Was?
setw(int breite) setzt die minimale Größe der direkt folgenden Ausgabe
setprecision(int praez) Gibt die Zahl der Stellen für Festkomma- oder Gleitkommadarstellung hinter dem Komma an, ansonsten die Maximalzahl der Stellen.
setiosflags s.u.
resetiosflags s.u.

 
Nun zu den "flags":
Flag Gruppe Was?
left adjustfield links ausrichten
right adjustfield rechts ausrichten
internal adjustfield +/- links und Zahl rechts
dec basefield Zahlen dezimal ("normal") ausgeben
hex basefield Zahlen hexadezimal ("Sechzehnersystem") ausgeben
oct basefield Zahlen oktal ("Achtersystem") ausgeben
showbase   zeigt Dezimalbasis von hex- und oct-Zahlen
showpos   "+" vor positive Zahlen
uppercase   Großschreibung
fixed floatfield Festkommazahl
scientific floatfield wissenschaftliche Darstellung

 

Anwendung

Die folgenden Zeilen:
Quelltext
  1. std::cout << std::setfill (' ') << std::setw (10) << std::setprecision (5);
  2. std::cout << 1234.5678;
  3.  

führen zu einer Ausgabe von "____1234.6" ("_"=Leerzeichen!)
 
Um Flags zu nutzen, musst du sie wie folgt aktivieren:
Quelltext
  1. std::cout.setf (std::ios::/*Flag*/, std::ios::/*Gruppe*/)
  2.  
  3. std::cout << std::setiosflags (std::ios::/*Flag*/, std::ios::/*Gruppe*/)
  4.  

Das Deaktivieren geht wie folgt:
Quelltext
  1. std::cout.unsetf (std::ios::/*Flag*/)
  2. std::cout << std::resetiosflags (std::ios::/*Flag*/)
  3. //(ohne Gruppe)
  4.  
  5. std::cout.unsetf (std::ios::/*Gruppe*/)
  6. std::cout << std::resetiosflags (std::ios::/*Gruppe*/)
  7. //Alle Flags einer Gruppe auf Standartwerte
  8.  

Es gibt noch weitere Möglichkeiten, wir wollen uns aber nicht länger damit aufhalten...

Beispiel

Quelltext[888B]Download
  1. //iomanip_bsp.cpp
  2. // ist nur ein kleines Beispiel
  3.  
  4. #include <iostream>
  5. #include <iomanip> //Für Manipulierungen/formatierte Ausgaben
  6. #include <limits> //für: std::numeric_limits<>::max()
  7.  
  8. //Diese Funktion löscht alle
  9. // Eingaben, die bisher getätigt wurden...
  10. std::istream& puffer_weg(std::istream& in)
  11. {
  12. return in.clear(), in.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  13. }
  14.  
  15. int main()
  16. {
  17. int c;
  18. std::cout << "Gib bitte eine Zahl ein: ";
  19. while (!(std::cin >> c))
  20. {
  21. std::cerr << "FEHLER: Falsche Eingabe!" << std::endl << " >";
  22. puffer_weg(std::cin);
  23. }
  24.  
  25. std::cout << std::hex << "hex: " << c << std::endl;
  26. std::cout << std::oct << "oct: " << c << std::endl;
  27. std::cout << std::dec << "dec: " << c << std::endl;
  28.  
  29. std::cout << std::setfill (' ') << std::setw (10) << std::setprecision (5);
  30. std::cout << 1234.5678 << std::endl;
  31.  
  32. return 0;
  33. }
  34.  

Beispielprogramm

Wie geht's weiter?

Weiter mit Callbacks!
Seite:  [1] - Drucken