C ++ Problem mit cin und STRG + Z


Ich lese C ++ Primer 5 und habe ein kleines Problem mit einer Übung:

Lesen Sie eine Folge von Wörtern aus cin und speichern Sie die Werte als Vektor. Nachdem Sie alle Wörter gelesen haben, verarbeiten Sie den Vektor und ändern Sie jedes Wort in Großbuchstaben. Drucken Sie die transformierten Elemente mit acht Wörtern in einer Zeile.

Mein Code ist dieser:

#include <iostream>
#include <vector>
#include <string>
#include <cctype>

using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;

int main(){

    vector<string> words;
    string wordBuffer;
    vector<string> output(1);

    while (cin >> wordBuffer){
        words.push_back(wordBuffer);
    }

    for (string &word : words){
        for (char &letter : word){
            letter = toupper(letter);
        }
    }

    unsigned currentLine = 0;
    for (decltype(words.size())index = 0; index < words.size(); ++index){

        output[currentLine] += words[index] + " ";

        if ((index+1) % 8 == 0){
            ++currentLine;
            output.push_back("");
        }

    }

    for (string s : output){
        s[s.size() - 1] = 0; //removing the whitespace
        cout << s << endl;
    }

    system("pause");
    return 0;
}

un, alles funktioniert gut, aber ich habe ein Problem mit der Eingabe der Wörter per Konsol
Wenn ich schreibe

Ich schreibe ein zufälliges Wort ^ Z

und drückeEingebe nichts passiert. Ich muss das ^ Z umschreiben, nachdem ich das @ gedrückt haEingebe, wie hier

Ich schreibe ein zufälliges Wort
^ Z

annst du mir erklären warum? Vielen Dank

PS: Ich sage das, weil in meinen vorherigen Programmen das Schreiben von ^ Z in der gleichen Zeile gut funktioniert hat. Wie in diesem Code:

#include <iostream>;


int main(){
    int currval = 0,val = 0;

        int count = 1;
        while (std::cin >> val){
            if (currval == val){
                ++count;
            }
            else {
                std::cout << "The number " << currval << " appears " << count << " times" << std::endl;
                currval = val;
                count = 1;
            }
        }
        std::cout << "The number " << currval << " appears " << count << " times" << std::endl;

    system("pause");

    return 0;
}

Ich kann nicht herausfinden, warum:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage