Почему ввод переменной типа string с помощью getline не работает?

98
12 февраля 2021, 20:40

Ввод данных о первой коробке срабатывает без ошибок. Но начиная со второй не происходит ввод названия (arr[i].name) - ввод просто пропускается и начинается ввод последующий данных. Никак не могу понять в чем проблема

#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>
using namespace std;
struct CandyBar {
    string name;
    double weight;
    int calories;
};
int main() {
    setlocale(LC_ALL, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    CandyBar arr[3];
    for (int i = 0; i < 3; i++) {
        cout << "Введите название " << i+1 << " коробки: ";
        getline(cin, arr[i].name);
        cout << "Введите вес " << i+1 << " коробки: ";
        cin >> arr[i].weight;
        cout << "Введите число каллорий " << i+1 << " коробки: ";
        cin >> arr[i].calories;
    }
    for (int i = 0; i < 3; i++) {
        cout << "Данные о " << i + 1 << " коробке:\n";
        cout << "Название: " << arr[i].name << endl;
        cout << "Вес: " << arr[i].weight << endl;
        cout << "Число калорий: " << arr[i].calories << endl;
    }
    _getch();
    return 0;
}<br>
Answer 1

cin >> оставляет \n в потоке из-за чего getline() впоследствии не считывает строку, т.к. натыкается на \n и заканчивает свою работу. Чтобы решить эту проблему можно воспользоваться следующим методом:

#include <limits>
//...
//тут cin >>
cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
READ ALSO
Как центрировать все по вертикали CSS

Как центрировать все по вертикали CSS

Нужно отцентровать весь текст с кнопкой по вертикалиПробовал много способов, но так ничего не получилось

122
onMouseDown/Up на мобильных устройствах

onMouseDown/Up на мобильных устройствах

Пишу игру, движение осуществляется с помощью кнопок (стрелок) на которых висит отслеживание onMouseDown (персонаж начинает двигаться) и OnMouseUp (персонаж...

125
Listbox обрезает кнопки по ширине [дубликат]

Listbox обрезает кнопки по ширине [дубликат]

Что сделать, чтобы ListBox не обрезал кнопки по ширине? При том, что применён margin ко всем сторонамЯ пытался загуглить, но там вопрос был в том,...

115
Групировка по нескольким фильтрам

Групировка по нескольким фильтрам

Есть вот такой класс

135