C ++ Ввод в вектор <float> без окончания его с плавающей точкой

0

Я работаю над проектом, где мне нужно вводить поплавки и назначать их вектору, я делаю это следующим образом:

//Input to temporary float
while (cin >> input)
{
    //Assign temporary float to vector<float>
    a.math_grades.push_back(input);
}

Это работает, но для завершения цикла while я должен ввести букву. Как я могу вводить вектор и иметь возможность закончить этот ввод, просто нажав enter?

Заранее спасибо! : D

- Коннор

  • 1
    Сигнал EOF.
  • 2
    EOF (конец файла) может сигнализироваться с помощью CTRL + D, если вы находитесь в терминале.
Показать ещё 1 комментарий
Теги:
vector

1 ответ

4
Лучший ответ

Предполагая, что вы хотите указать конец списка с пустой строкой, чтобы затем перейти к вводу других данных, индикатор конца файла вам не поможет.

В этом случае вы должны использовать std::getline для чтения строки за раз, завершить цикл при ошибке ИЛИ пустую строку. Внутри цикла вы преобразуете каждую непустую строку в float. boost::lexical_cast - хороший выбор для последней операции, так что strtof

  • 0
    @Connor getline в std::string , затем используйте это для создания std::istringstream , затем проанализируйте это. Онлайн примеров предостаточно.
  • 0
    @Patatoswatter Да, я понял, что Бен уже ответил на это и быстро удалил мой комментарий, в любом случае, спасибо за разъяснения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню