我有2d数组,代表矩阵,我需要通过重载<<来打印它操作
重载运算符的声明是
std::ostream &operator <<(std::ostream &os, const Matrix &matrix) {
return os;
}
并且效果很好 - 当我写
时 ostringstream os;
Matrix a;
// fill in the matrix
os << a;
这个函数被称为...但是虽然我已经阅读了一些教程,但我没有找到,如何使它打印出来的值...有人可以给我看看soma示例代码,如何实现从矩阵中打印出值的一些非常基本的操作?
btw-矩阵可以有随机大小..
答案 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
。