Text Formatierungsproblem



  • cout<<left<<"TEXT 1"<<cout.width(20)<<"TEXT 2"<<endl;
    for(int i=0;i<3;i++)
    {
    	cout<< left<<a[i]<< cout.width(20);
    	cout<<b[i]<<endl;
    }
    

    Ausgabe:

    TEXT 1 0TEXT 2
    yxz 0abc
    qwertz 0defghi
    qqqqqq 0jklm

    Was machen die Nullen da? Wie krieg ich die weg?



  • cout << left << "TEXT 1" << /*cout.*/ width(20) << "TEXT 2" << endl;
    for(int i=0;i<3;i++)
    {
    cout << left << a[i] << /*cout.*/width(20);
    cout<<b[i]<<endl;
    }



  • Das hatte ich auch schon versucht aber dann kommt:

    Aufruf der undefinierten Funktion 'width'

    Ich habe gerade herausgefunden das ich das auch so machen kann:

    cout<<left << "TEXT 1" << cout.width(20) << "\b" << "TEXT 2" << endl;
    

    Bis du ganz sicher das man width so aufrufen kann --> cout<<width(20);

    http://www.cplusplus.com/reference/iostream/ios_base/width/

    Weil dort steht das immer in dieser Syntax: cout.width(20);


  • Mod

    form schrieb:

    Weil dort steht das immer in dieser Syntax: cout.width(20);

    Da steht übrigens auch, dass der zugehörige Manipulator setw wäre. Da ist Belli (aus verständlichen Gründen) wohl durcheinander gekommen, welcher Bezeichner wie zu nutzen ist.



  • Da steht dann aber nur: cout.width(x) und nicht ... << cout.width(x)

    Binde mal iomanip ein:

    #include <iomanip>

    und verwende statt ... << width(20) << ...
    ... << setw(20) << ...



  • SeppJ schrieb:

    Da ist Belli (aus verständlichen Gründen) ...

    Danke!



  • Ich hab nochmal eine Frage zur Formatierung.

    string a[]={"abc","def","ghi"};
    string b[]={"123","456","789"};
    string c[]={"AAA","BBB","CCC"};
    
    for(int i=0;i<3;i++)
     {
    	 cout<< left << setw(20) <<a[i] << b[i];
    	 cout<< setw(30) <<c[i] << endl;
    
     }
    

    Gibt jetzt aus:
    TEXT 1 TEXT 2
    abc 123AAA
    def 456BBB
    ghi 789CCC

    Wenn ich da jedoch jetzt cout.width(30) verwende dann macht das Programm zwar die Zeilenabstände aber dann habe ich wieder eine 0 in der Zeile stehen.

    Setzt ich das setw hier falsch ein oder muss ich da eine andere Funktion benutzen wenn ich 3 Spalten erstellen will?


  • Mod

    form schrieb:

    Wenn ich da jedoch jetzt cout.width(30) verwende dann macht das Programm zwar die Zeilenabstände aber dann habe ich wieder eine 0 in der Zeile stehen.

    So macht man das schließlich auch nicht. Der Rückgabewert von cout.width() ist der Wert vor dem Aufruf. Und den gibst du dann aus.


Anmelden zum Antworten