假设我有一些类,并通过重载左位移运算符来添加输出功能:
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
显然,“hello”没有缩进。有没有一种简单的方法来缩进整个输出(而不仅仅是第一个元素)?
stringstream
中并进行后处理?我不知道在 C++ 上的后处理会是什么样子,但应该不会太难。 - user2357112stringstream
处理是“容易”或“方便”的。此外,它无法复制一行的前导空格字符...当然,我可以解析换行符,但那甚至更不方便... - davidhigh<<
运算符中考虑它;但这是不良的程序设计,因为它使该代码无法在此缩进方案之外使用。 - Colin Basnett<<
运算符的情况下实现这一点。如果没有更多关于你的程序目标和要求的信息,我们无法提供更具体的建议。 - Colin Basnett