Ausgabe von Vektoren richtig kontrollieren



  • Hallo,

    als Übung programmiere ich gerade ein kleines Beispiel, in dem User-Eingaben (verschiedene Wörter) in einen Vektor eingelesen, die eingelesenen Wörter dann in Großbuchstaben umgewandelt, und dann in einzelnen Zeilen, je Acht Wörter pro Zeile, wieder ausgegebenen werden sollen.
    Ich hänge jetzt an letzterem. Wahrscheinlich ist mein komplettes Beispiel umständlich programmiert, aber momentan weiß ich nicht, wie ich eine Ausgabe je Acht Wörter pro Zeile am besten angehe.
    Hier der Quelltext:

    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string word;
        vector<string> svec;
        while(cin >> word)
        {
            if(word != "")
            {
            svec.push_back(word);
            word = "";
            }
            else
            {
                cout << "Ende der Worteingabe" << endl;
                break;
            }
        }
    
        vector<string> svecupper(svec);
        for(int i = 0;i!=svecupper.size();++i)
        {
            toupper(svecupper[i]);
        }
    
        ....to be continued
    

    Vielen Dank schonmal

    Grüße, NewProggie



  • Das Ausgeben von acht Wörtern pro Zeile sollte eigentlich einfach sein:

    typedef vector<string>::const_iterator vci_t;
    
    for (vci_t i = svecupper.begin(); i != svecupper.end(); ) {
        for (int j = 0; j < 8 && i != svecupper.end(); ++j, ++i)
            cout << *i << ' ';
        cout << endl;
    }
    

    Die äußere Schleife stellt sicher, dass alle Elemente abgearbeitet werden. Die innere schreibt je acht Elemente in die Ausgabe.

    Als Alternative kann man die Funktion 'std::copy' aus <algorithm> in Verbindung mit einem ostream_iterator verwenden. Das ist aber für den Anfang vielleicht ein wenig zuviel.



  • Danke,

    das mit dem Iterator ist eine gute Idee.

    Grüße, NewProggie


Anmelden zum Antworten