Вы также можете делать отступы для столбцов и думать о первом размере столбца, затем о втором размере столбца и т. Д. Вы можете найти самое длинное имя в каждом столбце, а затем установить ширину для всех элементов в этом столбце с отступом и выровнять по своему желанию. Вы можете сделать это динамически, сначала найти размер элементов, затем выбрать ширину, или вы можете сделать это статически, например:
#include <iomanip>
#include <iostream>
#include <sstream>
void print_some()
{
using namespace std;
stringstream ss;
ss << left << setw(12) << "id: " << tank_name << '\n';
ss << left << setw(12) << "texture: " << texture_name << '\n';
ss << left << setw(12) << "uv_rect: ";
// clang-format off
ss << left <<setprecision(3) << fixed
<< setw(7) << r.pos.x << ' '
<< setw(7) << r.pos.y << ' '
<< setw(7) << r.size.x << ' '
<< setw(7) << r.size.y << '\n';
// clang-format on
ss << left << setw(12) << "world_pos: " << pos.x << ' ' << pos.y << '\n';
ss << left << setw(12) << "size: " << size.x << ' ' << size.y << '\n';
ss << left << setw(12) << "angle: " << angle << '\n';
}
Вывод может выглядеть следующим образом:
id: tank_spr
texture: tank.png
uv_rect: 0.300 0.500 0.500 0.500
world_pos: 0.123 0.123
size: 1.000 0.300
angle: 270.000