假设通过重载左移运算符,Ì有一些类和添加的输出功能:
struct Foo
{
int i = 1;
std::string s = "hello";
};
auto& operator<<(std::ostream& os, Foo const& foo)
{
os<<foo.i<<"\n";
os<<foo.s<<"\n";
return os;
}
缩进输出的好方法是什么?
示例:如果我写
std::cout<<" "<<Foo{}<<std::endl;
输出是:
1
hello
显然,你好不是缩进的.是否有一种简单的方法来缩进整个输出(而不仅仅是第一个元素)?
最佳答案 你正在序列化Foo对象吗?因此逻辑上,Foo的序列化字符串是Foo的实现细节.您可以编写自己的流类或类似的东西,但这是过度设计问题.
auto& operator<<(std::ostream& os, Foo const& foo)
{
auto s = "\t" + std::to_string(foo.i) + "\n"
"\t" + foo.s;
return (os << s);
}
int main()
{
std::cout << Foo{} << "\n";
}