istream i cin.get ()

Mam pytanie dotyczące różnicy między tymi dwoma fragmentami kodu:

char buffer5[5];
cin.get(buffer5, 5);
cout << buffer5;

cin.get(buffer5, 5);
cout << buffer5;

i

char buffer4;
while (cin.get(buffer4))
{
    cout << buffer4;
}

W pierwszym fragmencie kodu kod pobiera 5 znaków i umieszcza go w buforze5. Ponieważ jednak naciśniesz enter, znak nowej linii nie jest wprowadzany do strumienia podczas wywoływania get (), więc program zakończy działanie i nie poprosi Cię o kolejną rundę składającą się z 5 znaków.

W drugim fragmencie kodu cin.get () czeka na wejście do strumienia wejściowego, więc pętla nie kończy się (myślę). Powiedzmy, że wprowadzam „Apple” do strumienia wejściowego. Spowoduje to umieszczenie 5 znaków w strumieniu wejściowym, a pętla wydrukuje wszystkie znaki na wyjściu. Jednakże, w przeciwieństwie do pierwszego fragmentu kodu, nie zatrzymuje się, nawet po dwóch wejściach, ponieważ mogę ciągle wprowadzać dane.

Dlaczego mogę stale wprowadzać sekwencje znaków do terminala w drugim fragmencie kodu, a nie w pierwszym?

questionAnswers(1)

yourAnswerToTheQuestion