C ++ Форматирование строки времени выполнения - PullRequest
0 голосов
/ 17 июля 2009

Обычно я использую потоки для форматирования, однако в этом случае? Я не знаю формат до времени выполнения.

Я хочу иметь возможность использовать что-то вроде следующей строки формата:
Здравствуйте, {0}! Ваш последний логин был {1, дата: дд / мм / гг}.
... и введите переменные "Fire Lancer" и 1247859223 и получите следующую отформатированную строку:
Привет Огненный Лансер! Ваш последний логин был 17/07/09.

В других языках, которые я использую, есть встроенная поддержка для такого рода вещей, например, метод строки формата pythons, однако в c ++, похоже, нет такой функциональности, примите методы печати C, которые не очень безопасны.

Также это для высокопроизводительной программы, поэтому, какое бы решение я ни использовал, нужно один раз проанализировать строку формата и сохранить ее (например, с помощью метода Parse, который возвращает объект FormatString с помощью метода Format (string)), а не повторять анализ строка каждый раз, когда вызывается метод форматирования ...

Ответы [ 3 ]

2 голосов
/ 17 июля 2009

Повышенное форматирование делает это за вас:

http://www.boost.org/doc/libs/1_39_0/libs/format/doc/format.html

Проверьте этот вопрос и ответ для примеров использования:

2 голосов
/ 17 июля 2009

Ваша строка формата очень похожа на те, которые используются в ICU MessageFormat . Вы рассматривали возможность его использования?

0 голосов
/ 17 июля 2009

boost :: format выполнит часть позиционных аргументов, но не форматирование даты ...

...