Różnice pomiędzy while(true){} a getchar() i cin.get()
Ostatnio zmodyfikowano 2014-10-29 19:28
Argonus Temat założony przez niniejszego użytkownika |
Różnice pomiędzy while(true){} a getchar() i cin.get() » 2014-10-29 18:54:53 Witam wszystkich, od niedawna uczę się C++, tak dla samej rozrywki i w celach zawodowych jednocześnie. Mam prośbę, czy ktoś mógłby mi wytłumaczyć, czemu w poniższym programie jeśli używam od koniec cin.get(); albo getchar(); to program i tak mi się zamyka tj. okno a kiedy użyję while(true){} działa bez zarzutu. #include <iostream>
int main() { using namespace std; int carrots; cout << "Ile masz marchewek?" << endl; cin >> carrots; cout << "Proszę, oto jeszcze dwie. " << endl; carrots = carrots + 2; cout << "Teraz masz " << carrots << " marchewek." << endl; while( true ) { }; return 0; }
P.S będę pewnie częstym gościem, bo mam mało czas na załapanie podstaw. Koło 1,5 miesiąca :) Używam książki Język C++ Szkoła programowania wyd. VI, jak ktoś zna jakieś materiały dodatkowo do tego to też będę wdzięczny. |
|
Monika90 |
» 2014-10-29 19:01:08 Program Ci się zamyka kiedy użyjesz cin.get()/getchar() bo w strumieniu był znak przejścia do nowej linii. cin >> carrots; wczyta cyfry, a zostawi znak przejścia do nowej linii, więc cin.get(); wczyta ten znak na nic nie czekając. Możesz dać cin.get(); dwa razy to pomoże w tym wypadku. while( true ) { } to ma niezdefiniowane zachowanie, tego nie używaj. |
|
Chlorek |
» 2014-10-29 19:09:04 http://www.cplusplus.com/reference/istream/istream/ignore/ |
|
Rashmistrz |
» 2014-10-29 19:28:08 Obsługa strumienia wejściowego: "Czyszczenie zawartości strumienia wejściowego" Jak wyczyścisz bufor to nie będziesz musiał używać drugi raz cin.get(); . |
|
« 1 » |