Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Różnice pomiędzy while(true){} a getchar() i cin.get()

Ostatnio zmodyfikowano 2014-10-29 19:28
Autor Wiadomość
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.
C/C++
//getinfo.cpp -- wejscie i wyjscie
#include <iostream>

int main()
{
    using namespace std;
   
    int carrots;
   
    cout << "Ile masz marchewek?" << endl;
    cin >> carrots; // wczytywanie w c++
    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.
P-119634
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.
P-119635
Chlorek
» 2014-10-29 19:09:04
C/C++
cin.ignore();
cin.get();

http://www.cplusplus.com/reference/istream/istream/ignore/
P-119637
Rashmistrz
» 2014-10-29 19:28:08
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja:
"Czyszczenie zawartości strumienia wejściowego"

Jak wyczyścisz bufor to nie będziesz musiał
używać drugi raz
cin.get();
.
P-119642
« 1 »
  Strona 1 z 1