Информация об изменениях

Сообщение python format for C++20 от 07.03.2019 16:36

Изменено 07.03.2019 17:00 niXman

python format for C++20
привет!

почитал это(https://habr.com/ru/company/yandex/blog/438864/), и обратил внимание на это(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r5.html).

сабжевую реализацию я как-то пытался использовать, но не срослось...
две причины:
первый пункт пока зачеркну, похоже что-то изменилось в лучшую сторону.
1. результат в виде строки.
т.е. нет возможности выводить в какой-нить iostream по мере форматирования.
пример:
std::cout << std::format("{}-{}", 1, 2);

тут результат сначала будет выведен в строку, потом вся строка в std::cout.
а представте, что плейсхолдеров у вас десяток. или, заменители размером в сотни байт.


2. не учитывает установленные флаги iostream.
т.е. этот же пример выведет не то, что вы ожидаете.
std::cout.precision(4);
std::cout.flags(std::ios_base::fixed|std::ios_base::showpoint);
std::cout << std::format("{}-{}", 1.3, 2.7);


радует, конечно, что оно появилось, но расстраивает, конечно, что появилось в таком виде.
python format for C++20
привет!

почитал это(https://habr.com/ru/company/yandex/blog/438864/), и обратил внимание на это(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r5.html).

сабжевую реализацию я как-то пытался использовать, но не срослось...
две причины:
первый пункт пока зачеркну, похоже что-то изменилось в лучшую сторону.
1. результат в виде строки.
т.е. нет возможности выводить в какой-нить iostream по мере форматирования.
пример:
std::cout << std::format("{}-{}", 1, 2);

тут результат сначала будет выведен в строку, потом вся строка в std::cout.
а представте, что плейсхолдеров у вас десяток. или, заменители размером в сотни байт.


2. не учитывает установленные флаги iostream.
т.е. этот же пример выведет не то, что вы ожидаете.
std::cout.precision(4);
std::cout.flags(std::ios_base::fixed|std::ios_base::showpoint);
std::cout << std::format("{}-{}", 1.3, 2.7);


радует, конечно, что оно появилось, но расстраивает, конечно, что появилось в таком виде.