Каков идеальный способ настройки разделителей и скобок для форматирования диапазонов?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Каков идеальный способ настройки разделителей и скобок для форматирования диапазонов?

Сообщение Anonymous »

В C++23 мы можем использовать std::print напрямую для печати диапазонов благодаря P2286:

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

std::vector v = {10, 2, 42, 15};
std::println("{::02X}", v); /* 02X is the format spec for elements of range */
что дает:

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

[0A, 02, 2A, 0F]
Однако, если я хочу настроить скобки и разделитель на «|» и «-» соответственно:

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

|0A-02-2A-0F|
Как мне это сделать? Я знаю, что std::range_formatter предоставляет два пользовательских API: set_brackets() и set_separator(), поэтому интуитивно понятный способ, похоже, специализирует std::formatter:

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

template
struct std::formatter : std::range_formatter {
constexpr formatter() {
this->set_brackets("|", "|");
this->set_separator("-");
}
};
что дает ожидаемые результаты.
Но мне интересно, есть ли для этого лучшая практика, например, настройка скобок и разделителей напрямую с использованием определенного форматирования строки (которые стандарт в настоящее время, похоже, не поддерживает).
Каков рекомендуемый способ сделать это в текущем стандарте? Есть ли проблемы с решением вопроса?

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

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

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

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

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

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