Überlagerung von cout-Anweisungen?



  • Hey,

    ich habe gerade ein Problem bei meinem Code; eigentlich sollte der Code einen String in mehrere Teile zerlegen (Satz in Wörter, getrennt durch Leerzeichen),
    allerdings erscheint bei der Ausführung mein Prompt-Zeichen (">") unerwünscht:
    Quellcode->

    #include <iostream>
    #include <string>
    #include <sstream>
    #include <vector>
    
    std::vector<std::string> ve_token(1);
    
    int to_word(std::string input) {
    std::istringstream iss(input);
    std::string go;
    int i = 0;
    do {
    iss >> go;
    ve_token[i] = go;
    i++;
    } while (iss);
    return 0;
    }
    
    std::string output(std::string input) {
    to_word(input);
    int in = ve_token.size();
    int ix = 0;
    while (ix < in) {
    std::string out = ve_token[ix];
    std::cout << out << std::endl;
    ix++;
    }
    }
    
    int main(int argc, char **argv) {
    std::string input;
    std::cout << ">";
    for(;;) {
    std::cin >> input;
    output(input);
    std::cout << ">";
    }
    return 0;
    }
    

    Ausgabe->

    >Ein einzelner Satz
    Ein
    >einzelner
    >Satz
    >
    

    Gewünschste Ausgabe sollte sein->

    >Ein einzelner Satz
    Ein
    einzelner
    Satz
    >
    

    Da ich meinen Fehler nicht finden kann, geht die Frage an euch;)
    Mfg Arc



  • Das Problem ist derselbe Grund, wieso dein to_word funktioniert.
    Der operator>> für Strings hört nach einem Leerzeichen auf zu lesen. Nutz getline um eine Zeile zu lesen

    BTW: Dein Programm ist auch nicht sonderlich toll. Überflüssige globale Variable und out-of-range access, sobald ein String aus mehr als einem Wort besteht. Schau dir mal an, wie man einem vector ein Element hinzufügt.



  • Danke für die Antwort; wie toll mein Programm ist weiß ich leider auch, allerdings hab ich eine längere Zeit nicht programmiert und versuche deswegen mit einigen kleinen Programmen wieder sauber zu programmieren zu üben bzw. mich an alles zu erinnern

    -Arc



  • Ich hab grad eine riesige Wand an Text geschrieben, wo ich versucht habe verschiedene Dinge anzusprechen und Konzepte zu erklären (so gut ich es eben kann) und dann hab ich gemerkt, dass alles bekommt man in einem guten Buch vermittelt:
    https://www.c-plusplus.net/forum/251551
    http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
    Wenn du ernsthaft C++ lernen möchtest, ist eine ordentliches Buch sehr zu empfehlen.


Anmelden zum Antworten