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

Подскажите, как можно это исправить?


Ответы (0 шт):