Rozdział 26 Zadanie Domowe 2 -- problemy z getline
Ostatnio zmodyfikowano 2015-01-09 17:20
DDa12 Temat założony przez niniejszego użytkownika |
Rozdział 26 Zadanie Domowe 2 -- problemy z getline » 2015-01-08 23:18:54 Sprawdzi ktoś ten kod? #include <iostream> #include <string> void wczytajOsobe( std::string & i, std::string & n, int & w ) { std::cout << "Imię: "; std::getline( std::cin, i ); std::cout << "Nazwisko: "; std::getline( std::cin, n ); std::cout << "Wiek: "; std::cin >> w; } void wypiszOsobe( std::string & i, std::string & n, int & w ) { std::cout << "Imię: " << i << std::endl; std::cout << "Nazwisko: " << n << std::endl; std::cout << "Wiek: " << w << " lat" << std::endl; } int ileOsob() { int ile; std::cout << "Ile osób? "; std::cin >> ile; return ile; } int main() { int ile = ileOsob(); std::string imie[ ile ]; std::string nazwisko[ ile ]; int wiek[ ile ]; for( int i = 0; i < ile; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); for( int i = 0; i < ile; i++ ) wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; }
Gdzie jest błąd? Mi omija wpisywanie imienia, a robiłem wszystko jak trzeba (tak mi się wydaje). |
|
alixir |
» 2015-01-09 07:24:01 std::cin pozostawia znak nowej linii w buforze. Sam std::cin go nie czyta, więc kolejne użycie cin działało by prawidłowo, lecz std::getline już go łyka, więc musisz wyczyścić bufor przed użyciem getline. |
|
DDa12 Temat założony przez niniejszego użytkownika |
Thanks! » 2015-01-09 17:20:07 Wielkie dzięki. ;-) |
|
« 1 » |