如何在c ++中打印结构?

时间:2017-06-21 15:00:11

标签: c++ data-structures

我们可以使用structure.element打印结构的元素。但我想立刻打印一个完整的结构。

是否有类似cout<<strucutre的方法,就像我们在Python中打印列表或元组一样。

这就是我想要的:

struct node {
  int next;
  string data;
};

main()
{
  node n;
  cout<<n;
}

2 个答案:

答案 0 :(得分:0)

是。你应该覆盖&lt;&lt;对象cout的运算符。但是friend ostream& operator<< (ostream & in, const node& n){ in << "(" << n.next << "," << n.data << ")" << endl; return in; } 是类ostream的对象,所以你不能简单地重载&lt;&lt;该课程的操作员。你必须使用朋友的功能。函数体看起来像这样:

{{1}}

如果您的班级中有私人数据,该功能就是朋友。

答案 1 :(得分:0)

你需要重载&lt;&lt;操作员:

#include <string>
#include <iostream>
struct node {
    int next;
    std::string data;
    friend std::ostream& operator<< (std::ostream& stream, const node& myNode) {
        stream << "next: " << myNode.next << ", Data: " << myNode.data << std::endl;
        return stream;
    }
};

int main(int argc, char** argv) {
    node n{1, "Hi"};

    std::cout << n << std::endl;
    return 0;
}