сабжевую реализацию я как-то пытался использовать, но не срослось...
две причины:
первый пункт пока зачеркну, похоже что-то изменилось в лучшую сторону. 1. результат в виде строки.
т.е. нет возможности выводить в какой-нить iostream по мере форматирования.
пример:
std::cout << std::format("{}-{}", 1, 2);
тут результат сначала будет выведен в строку, потом вся строка в std::cout.
а представте, что плейсхолдеров у вас десяток. или, заменители размером в сотни байт.
2. не учитывает установленные флаги iostream.
т.е. этот же пример выведет не то, что вы ожидаете.
Здравствуйте, niXman, Вы писали:
X>сабжевую реализацию я как-то пытался использовать, но не срослось... X>две причины: X>1. результат в виде строки. X>т.е. нет возможности выводить в какой-нить iostream по мере форматирования.
X>2. не учитывает установленные флаги iostream. X>т.е. этот же пример выведет не то, что вы ожидаете.
Имхо, ты пытаешься смешать две отдельные задачи. Основой "target scenario" этой фичи — как раз тот случай, когда никакого ostream нету, а нужно просто получить строку. Раньше для решения этой задачи приходилось использовать то boost::format, то boost::lexical_cast, или по-быстрячку колбасить локальные "to_string", которые нужны были временно, как правило. Иногда они удалялись, а иногда забывались, засирая код.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, niXman, Вы писали:
X>1. результат в виде строки. X>т.е. нет возможности выводить в какой-нить iostream по мере форматирования.
Есть же!
X>2. не учитывает установленные флаги iostream. X>т.е. этот же пример выведет не то, что вы ожидаете.
Выводит что ожидаю
Здравствуйте, rg45, Вы писали:
R>Имхо, ты пытаешься смешать две отдельные задачи. Основой "target scenario" этой фичи — как раз тот случай, когда никакого ostream нету, а нужно просто получить строку.
во-первых — ostream есть, и, судя по всему, никуда уже не денется. с ним считаться нужно.
во-вторых — если бы был возможен вывод в ostream — очень просто сделать его выводом в строку. а вот наоборот — сложнее.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
R>Имхо, ты пытаешься смешать две отдельные задачи. Основой "target scenario" этой фичи — как раз тот случай, когда никакого ostream нету, а нужно просто получить строку. Раньше для решения этой задачи приходилось использовать то boost::format, то boost::lexical_cast, или по-быстрячку колбасить локальные "to_string", которые нужны были временно, как правило. Иногда они удалялись, а иногда забывались, засирая код.