gpt4 book ai didi

C++ 缩进重载 ostream 运算符

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:15:54 26 4
gpt4 key购买 nike

假设 Ì 有一些类并通过重载左移运算符添加了输出功能:

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 没有缩进。是否有一种简单的方法来缩进整个输出(而不仅仅是第一个元素)?

最佳答案

您正在序列化 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";
}

关于C++ 缩进重载 ostream 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37060947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com