• 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
37 wizyt
pytanie zadane 14 czerwca w C i C++ przez Agnes Użytkownik (600 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 Stary wyjadacz (12,360 p.)
wybrane 4 dni temu 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ź 92 wizyt
0 głosów
2 odpowiedzi 25 wizyt
pytanie zadane 4 dni temu w C i C++ przez Agnes Użytkownik (600 p.)
+1 głos
2 odpowiedzi 233 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

51,027 zapytań

93,344 odpowiedzi

189,543 komentarzy

24,885 pasjonatów

Przeglądających: 292
Pasjonatów: 10 Gości: 282

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.

...