• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

cin.ignore(), cin>> i zachowanie bufora

Cloud VPS
0 głosów
450 wizyt
pytanie zadane 14 czerwca 2018 w C i C++ przez Agnes Użytkownik (990 p.)
struct album {
    int year;
    string title;
    double price;
};
void zadanie()
{
    album newalbum[5];
    for (int i = 0; i < 5; i++)
    {
        cout << "Wprowadz rok wydania.";
        cin >> newalbum[i].year;
        cout << "Wprowadz tytul.";
        getline(cin, newalbum[i].title);
        cout << "Wprowadz cene.";
        cin >> newalbum[i].price;
    }
    cout << endl;
 
    for (int i = 0; i < 5; i++)
    {
        cout << "Rok wydania: " << newalbum[i].year << endl;
        cout << "Tytul: " << newalbum[i].title << endl;
        cout << "Cena: " << newalbum[i].price << endl;
    }
 
}

W tym przypadku zakładając, że użytkownik po podaniu roku wpisze np. trzy spacje i dopiero potem wciśnie enter... Nie będzie wtedy tak, że cin.ignore() bez argumentu zignoruje ostatni znak, który dostał, czyli właśnie '\n' i wtedy te spacje byłyby traktowane jako część zmiennej newalbum[i].year? Oczywiście to byłby błąd, gdyż ona jest typu int. Ale to wygląda tak, czy inaczej?

1 odpowiedź

0 głosów
odpowiedź 14 czerwca 2018 przez monika90 Pasjonat (22,940 p.)
wybrane 20 czerwca 2018 przez Agnes
 
Najlepsza

Gdyby po cin >> year było cin.ignore() to cin.ignore() wczytałoby pierwszą z 3 spacji. Dwie kolejne spacje i znak \n wczytałoby getline i tytułem albumu byłyby dwie spacje. Dlatego daj tam

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

to wczyta wszystkie 3 spacje i znak '\n' też.

Podobne pytania

0 głosów
1 odpowiedź 943 wizyt
0 głosów
0 odpowiedzi 417 wizyt
pytanie zadane 10 sierpnia 2020 w C i C++ przez lujasjeden Użytkownik (860 p.)
0 głosów
2 odpowiedzi 2,731 wizyt
pytanie zadane 30 czerwca 2019 w C i C++ przez patryk123 Nowicjusz (170 p.)

93,482 zapytań

142,415 odpowiedzi

322,761 komentarzy

62,895 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...