• 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

0 głosów
46 wizyt
pytanie zadane 14 czerwca w C i C++ przez Agnes Użytkownik (740 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 przez monika90 Pasjonat (16,260 p.)
wybrane 20 czerwca 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ź 110 wizyt
0 głosów
2 odpowiedzi 36 wizyt
pytanie zadane 20 czerwca w C i C++ przez Agnes Użytkownik (740 p.)
+1 głos
2 odpowiedzi 251 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

54,442 zapytań

98,327 odpowiedzi

202,258 komentarzy

26,743 pasjonatów

Przeglądających: 153
Pasjonatów: 4 Gości: 149

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...