Пропуск оператора [дубликат]

256
14 февраля 2017, 19:31

На данный вопрос уже ответили:

  • Некорректное чтение строки из std::cin после чтения числового значения 3 ответа

Знающие, подскажите в чём ошибка. Задана такая задачка, надо реализовать интерфейс домашней аудио-коллекции, создал её так

struct Songs
{
    char name_autor[50];
    char name_song[50];
    double time;
};
class Audio_Collection
{
public:
    Songs audio[N];
    void set_audio();
    void print_audio();
    void sort_name_autor();
    void sort_name_song();
    void sort_time();
};

Вот реализация ф-ии ввода данных,

void Audio_Collection::set_audio()
{
    for (int i = 0; i < N; i++)
    {
        cout << "Введите имя автора(группы): ";
        cin.getline(audio[i].name_autor, 50);
        cout << "Введите название песни: ";
        cin.getline(audio[i].name_song, 50);
        cout << "Введите продолжительность трека: ";
        cin >> audio[i].time;
    }
}

И вот в чём загвоздка, при вводе данных возникает такая ошибка

При вводе второго последующих значений не выполняется строка

cin.getline(audio[i].name_autor, 50); 

как это исправить?

Answer 1

Сбросьте буфер после чтения double - в нем же остается перевод строки... Добавьте после

cin >> audio[i].time;

строчку

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
READ ALSO
Что значит: &ldquo;virtual void funcC( double = 0.0 );&rdquo;?

Что значит: “virtual void funcC( double = 0.0 );”?

Добрый деньСлучайно наткнулся на функцию у которой непонятно что записано в параметрах:

384
Неразрешенные внешний символы (ImGui)

Неразрешенные внешний символы (ImGui)

Добрый деньПытаюсь внедрить ImGui в свое приложение

408
wcout в WinXP при использовании MinGW w64

wcout в WinXP при использовании MinGW w64

Как вывести не-ASCII текст с помощью std::wcout в Windows XP, если для компиляции используется MinGW w64? Уже посмотрел кучу похожих вопросов, но ничего из этого...

301
Переставить слои местами

Переставить слои местами

Какие возможности есть по следующему заданию???

317