führende 0 ausgeben
-
Hi, ich habe hier ein kleines Beispiel mit printf.
int **feld=new int*[10]; for(i=0; i<10;i++) { feld[i]=new int[10]; for(int j=0; j<10;j++) { feld[i][j]=10*i+j; printf("%02d ",feld[i][j]); } printf("\n"); }
Wie kann ich jetzt mit cout, die gleiche Ausgabe erzielen, die ich mit
printf("%02d ",...) erhalte?
-
setfill und setw
etwa so:
cout << setfill('0') << setw(5) << i;
-
Danke,
spiecht eigentlich etwas gegen die Verwendung von printf in C++ Programmen, außer das es sich um C handelt?
-
daishi schrieb:
Danke,
spiecht eigentlich etwas gegen die Verwendung von printf in C++ Programmen, außer das es sich um C handelt?Ja. printf ist nicht Typensicher:
printf("%s",3);
- das faellt nur wenigen Compilern aufDie Loesung ist: boost bietet ein typensicheres printf()
Aber meistens sind C++ streams sowieso besser. Denn da musst du dich nicht um den Typen kuemmern:
template<typename T> void print(T const& obj) { cout<<obj<<'\n'; }
Sowas geht mit printf nicht.
Denn bei den C++ streams kann man den operator<< und >> ueberladen, so dass man jede Klasse ausgeben und einlesen kann, ohne sich um irgendwas kuemmern zu muessen:string str("Hello World"); printf("%s",str.c_str()); cout<<str;