Форматировать строку в C ++ с тем же удобством, что и String.format () в Java 5/6? - PullRequest
3 голосов
/ 21 июля 2011

Существует ли общая функция, позволяющая выполнять форматирование строки типа sprintf без необходимости предоставления буфера фиксированного размера, который возвращает экземпляр класса string?

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

Я хочу иметь возможность определять шаблон, как позволяет sprintf, но без багажа C и в более идиоматической объектно-ориентированной манере C ++.

Может быть, какая-то функция, которая делает то, что sprintf делает с использованием stringstream и создает объект string? Что-то вроде удобства того, что String.format () делает в Java или эквивалентный синтаксис форматирования строки в Python.

Ответы [ 2 ]

10 голосов
/ 21 июля 2011

Библиотека форматов повышения :

Класс форматирования <boost/format.hpp> обеспечивает printf -подобное форматирование безопасным для типов способом, который позволяет выводить определяемые пользователем типы.

0 голосов
/ 22 января 2014

Если вы не используете Boost.Format или Boost.Locale, вы можете использовать мою простую упаковочную строку или обернуть ее еще дальше:

fakeformat

пример:

REQUIRE( ff::format("{2}ff{1}").with('a').also_with(7).now()=="7ffa" );

Ideone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...