resetiosflags macht Ausgabe kaputt
-
Hallo allerseits!
Wie bereits im Titel geschrieben macht "resetiosflags" irgendwie nicht das, was ich davon erwarte. Ich möchte, dass nach der Ausgabe von "meineZahl" als "00000040" wieder "40" ausgegeben wird. Wie kann ich das erreichen?
Ich habe folgendes Programm:
#include <iostream> #include <iomanip> #include <cmath> using namespace std; int main () { unsigned long meineZahl = pow(2, 6); cout << hex << meineZahl << endl; cout << setfill ('0') << setw (8); cout << hex << meineZahl << endl; cout << resetiosflags; cout << hex << meineZahl << endl; return 0; }Und folgende Ausgabe:
40 00000040 140Wieso steht vor der "40" jetzt noch ein "1" und wie bekomme ich den Ausgangszustand zurück?
Mfg,
Frank
-
Guck noch einmal in die Referenz, wie man resetiosflags benutzt:
http://www.cplusplus.com/reference/iostream/manipulators/resetiosflags/
-
Ich hätte hier nicht gefragt, wenn ich das nicht schon gemacht hätte und trotzdem nicht richtig verstanden hätte.

Ich möchte im Grund ja nur "setfill ('0')" und "setw (8)" weghaben.
Mitcout << setw(0);ist die Ausgabe jetzt wieder normal. Wie kann ich nun noch das setfill wegmachen. Oder kann ich das einfach so lassen?
mfg,
Frank
-
Es fehlt noch der entsprechende Parameter, d.h. z.B.
cout << resetiosflags(ios_base::hex) // bzw. kürzer: ios::hexDas geht aber aus der von SeppJ verlinkten Seite (die ich auch gerade herausgesucht hatte
ganz klar hervor.Da aber 'fill' und 'width' nicht zu den Format-Flags zählen, kannst du dieses auch nicht wieder mittels resetiosflags() zurücksetzen.
Die gute Naxchricht aber ist, wie du ja anhand deines Codes schon gesehen hast, daß setfill() und setw() automatisch nach einer Ausgabe wieder zurückgesetzt werden.
Laß also einfach das fehlerhafte 'cout << resetiosflags;' bei dir raus (die 1 wird hier ausgegeben, da der Wert in ein bool gewandelt wird und als 0 oder 1 ausgegeben wird).