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

Rozdział 26 Zadanie Domowe 2 -- problemy z getline

Ostatnio zmodyfikowano 2015-01-09 17:20
Autor Wiadomość
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?
C/C++
#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).
P-124476
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.
P-124479
DDa12
Temat założony przez niniejszego użytkownika
Thanks!
» 2015-01-09 17:20:07
Wielkie dzięki. ;-)
P-124496
« 1 »
  Strona 1 z 1