Feste Breite für Floats mit iostreams
Verfasst: 30.09.2009, 12:34
Hallo zusammen,
momentan ein kleines Problem ich möchte meine Matritzen über einen stream einfach ausgeben, damit das anständig aussieht würde ich gerne die einzelnen werte wirklich auf eine bestimmte Breite fest setzen.
Leider führen meine Versuche da nicht zu korrekten Ergebnissen:
Bisher bin ich bis hier hin gekommen
Was als Ausgabe dann bspw
Liefert, wie man sieht ist die 10.000 hinten zu breit. Im Grunde ist mir die Art der Lösung egal also ob abgeschnitten wird, oder mit Nullen aufgefüllt wird. Hauptsache Die Floats sind gleich breit.
Kennt jemand eine Lösung? Würde ungerne auf printf umsteigen, nur deswegen.
momentan ein kleines Problem ich möchte meine Matritzen über einen stream einfach ausgeben, damit das anständig aussieht würde ich gerne die einzelnen werte wirklich auf eine bestimmte Breite fest setzen.
Leider führen meine Versuche da nicht zu korrekten Ergebnissen:
Bisher bin ich bis hier hin gekommen
Code: Alles auswählen
inline std::ostream& operator << (std::ostream& out, const Matrix& aMat )
{
out << std::fixed << std::showpos << std::setw(6) << std::setprecision (3) << std::setfill('0') <<
aMat.M[0] << " " << aMat.M[4] << " " << aMat.M[8] << " " << aMat.M[12] << std::endl <<
aMat.M[1] << " " << aMat.M[5] << " " << aMat.M[9] << " " << aMat.M[13] << std::endl <<
aMat.M[2] << " " << aMat.M[6] << " " << aMat.M[10] << " " << aMat.M[14] << std::endl <<
aMat.M[3] << " " << aMat.M[7] << " " << aMat.M[11] << " " << aMat.M[15] << std::endl;
return out;
}
Code: Alles auswählen
+0.750 +0.000 +0.000 +0.000
+0.000 +1.000 +0.000 +0.000
+0.000 +0.000 +1.010 -9.091
+0.000 +0.000 -1.000 +10.000
Kennt jemand eine Lösung? Würde ungerne auf printf umsteigen, nur deswegen.