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?