C++ ввод и вывод в консоль
Вопрос немного странный, но ответ найти не могу. Пишу класс массива, в нем есть перегруженные операторы ввода и вывода. Выглядят так:
template <class T, size_t rows, size_t cols>
std::ostream &operator<<(std::ostream &out, const MatrixArray<T, rows, cols> &m) {
for (size_t y = 0; y < rows; ++y) {
for (size_t x = 0; x < cols; ++x) {
out << m(y, x) << " ";
}
std::cout << '\n';
}
return out;
}
template <class T, size_t rows, size_t cols>
std::istream &operator>>(std::istream &in, MatrixArray<T, rows, cols> &m) {
for (size_t y = 0; y < rows; ++y) {
for (size_t x = 0; x < cols; ++x) {
in >> m(y, x);
}
}
return in;
}
Затем в функции main я пишу такой код:
int main() {
std::stringstream is{"-5 1\n0 10"};
MatrixArray<int, 2, 2> matrix{};
is >> matrix;
std::stringstream os;
os << matrix;
std::cout << os.str();
}
Я вижу вывод:
-5 1 0 10
А хотел бы увидеть такой:
-5 1\n0 10\n
Подскажите, как можно это исправить?