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 auf 😞

    Die 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;
    

Anmelden zum Antworten