Вот решение, которое является простой первой попыткой.Вам нужно будет больше исследовать, если вы хотите большей производительности / гибкости.
Как вы упомянули, это решение требует, чтобы компоненты во входной строке были разделены пробелами, чтобы иметь возможность давать правильные результаты.
Он использует std::istringstream
, который работает так же, как std::cin
.Вы предоставляете ей входную строку и продолжаете читать компоненты, разделенные пробелами.
#include <vector>
#include <string>
#include <sstream>
std::istringstream iss{ line }; // initialize with the input string
std::string name;
iss >> name; // extract the first component as a string
std::vector<int> marks;
for (int num = 0; iss >> num;) // extract rest of the components as int
marks.push_back(num); // and store them in a vector
Помните, что имя не может содержать пробел.
Например, это решение не будет работать с этимinput: Paul Walker 34 56 72 89 92
.
Чтобы иметь возможность анализировать строку с именем, содержащим пробелы, вам придется глубже вникать и делать более сложные вещи.