У меня есть вход от isstream
1 2
3 4
5 6
Я хотел бы заполнить это из-за перегрузки isstream оператором >>
вход будет выглядеть как
Matrix m;
string input = "1 2 \n 3 4\n 5 6\n";
istringstream ss(input);
ss >> m;
как мне реализовать оператор >>
для разбора матрицы из isstream?
Я пробовал приведенный ниже код, но, похоже, вызов peek игнорирует новую строку
std::istream& operator>>(std::istream& is, Matrix& s)
{
vector<vector<int>> elements;
int n;
while (!is.eof())
{
vector<int> row;
while ((is.peek() != '\n') && (is >> n))
{
row.push_back(n);
}
is.ignore(numeric_limits<streamsize>::max(), '\n');
elements.push_back(row);
}
return is;
}