使用重载<<<<<<<操作者

时间:2013-04-04 21:28:21

标签: c++

我有2d数组,代表矩阵,我需要通过重载<<来打印它操作

重载运算符的声明是

std::ostream &operator <<(std::ostream &os, const Matrix &matrix) {

return os;
}

并且效果很好 - 当我写

 ostringstream os;
 Matrix a;
 // fill in the matrix
 os << a;

这个函数被称为...但是虽然我已经阅读了一些教程,但我没有找到,如何使它打印出来的值...有人可以给我看看soma示例代码,如何实现从矩阵中打印出值的一些非常基本的操作?

btw-矩阵可以有随机大小..

2 个答案:

答案 0 :(得分:1)

您需要将结果从ostringstream写入cout

ostringstream os;
Matrix a;
// fill in the matrix
os << a;
cout << os.str();

或者你直接这样做:

Matrix a;
// fill in the matrix
cout << a;

答案 1 :(得分:0)

如果没有看到你的Matrix类定义,很难猜出它是如何实现的,但你可能想要这样的东西:

std::ostream& operator<< (std::ostream &os, const Matrix &matrix) {
    for (int i = 0; i < matrix.rows; ++i)
    {
        for (int j = 0; j < matrix.cols; ++j)
            os << " " << matrix.data[i * matrix.cols + j];
        os << std::endl;
    }
    return os;
}

要显示矩阵,您只需执行此操作:

 Matrix a;
 // fill in the matrix
 cout << a;

这会调用上面的operator<<实现来将矩阵打印到stdout。显然,您可以使用任何其他适当的输出流而不是cout