はのは、私は左シフト演算子をオーバーロードすることにより、いくつかのクラスと追加の出力機能を持っているとしましょう:C++インデント、オーバーロードのostream演算子
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
は字下げされません。 (最初の要素だけでなく)出力全体をインデントする簡単な方法はありますか?
"OS <<" \ tの "<< foo.i <<" \ nに置き換えます。コードは次のようになります";"? – wyas
'stringstream'に出力し、文字列を後処理しますか?私は後処理がC++上でどのように見えるかは分かりませんが、それほど悪くはありません。 – user2357112
@ user2357112が指摘したように、適切な解決策は、出力を 'stringstream'にパイプし、そこで文字列を解析することです。次に、必要に応じてインデントを追加し、 'cout'に書き込みます。 –