C++17: выравнивание второго столбца текстаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++17: выравнивание второго столбца текста

Сообщение Anonymous »

Я видел несколько подобных вопросов, но не нашел ни одного, который полностью отвечал бы тому, что мне нужно, и большинство из них используют std::cout вместе с iomanip
Я использую libfmt (хотя ответ на C++20, скорее всего, будет совместим)
У меня есть утверждение, подобное следующему:

Код: Выделить всё

std::string{fmt::format(
"Found system paths:\n"
"{8}base: {0}\n"
"{8}share: {1}\n"
"{8}locale: {2}\n"
"{8}sysConf: {3}\n"
"{8}home: {4}\n"
"{8}config: {5}\n"
"{8}data: {6}\n"
"{8}cache: {7}\n",
base, share, locale, sysConf, home, conf, data, cache, "|----------"
)};
Целью {8} является компенсация префикса, добавленного к первой строке вывода после того, как с ним завершилась функция fmt.
Проблема в том, что, поскольку и фактические пути, и имя каждой папки имеют разную ширину, я не могу добиться аккуратного выравнивания.
Я бы хотел увидеть что-то нравится:

Код: Выделить всё

----------- Found system paths
|---------- base:         /path/to/somewhere/base
|---------- share:        /path/to/base/share
|---------- locale:       /path/to/base/locale
|---------- sysConf:      /path/to/another-place/config
|---------- home:         /path/to/home
|---------- config:       /path/to/a-third-place/config
|---------- data:         /path/to/base/data
|---------- cache:        /path/to/a-third-place/cache

Мне известен синтаксис выравнивания/ширины, но я не понял, как их использовать для достижения того, чего хочу. Поэтому я опустил их использование в код (я пробовал несколько разных неудачных комбинаций в реальном коде)

Подробнее здесь: https://stackoverflow.com/questions/792 ... mn-of-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»