Форматированный std::to_string()

Тимофей Чернов
Тимофей Чернов

Не хватает функциональности форматирования строки при использовании std::to_string(numeric_value).

Примером форматирования могут быть манипуляторы <iomanip> - если хочется зафиксировать ширину числа (setfill/setw), точность (setprecision) или основание системы счисления (base).

4
рейтинг
10 комментариев
yndx-antoshkka
to_chars из С++17 подходит под ваши нужды? Или вы хотите форматирование именно зависящее от локали?
yndx-antoshkka
Тимофей Чернов
yndx-antoshkka,
Почти подходит, но у него:
1) неудобный тип возвращаемого значения - хочется сразу в std::string
2) неудобный тип входного значения - только число и формат
3) таки нельзя проставить лидирующие нули :)
Тимофей Чернов
yndx-antoshkka
Тимофей Чернов,

Сложно придумать решение, которое бы всем понравилось. Стоит начать с прототипа.
yndx-antoshkka
Yaroslav Belgorodsky
Если что-то типо boost::format , вполне может подойти
Yaroslav Belgorodsky
yndx-antoshkka
Меня не устроит. Меня не устроит любая конвертация/форматирование, которое использует std::locale.
yndx-antoshkka
h4tred
yndx-antoshkka, а как быть когда форматировать согласно локали таки нужно? Например: десятичная точка или запятая?
h4tred
yndx-antoshkka
h4tred, тогда придумайте такое, где можно форматировать и с локалью и без неё :)
yndx-antoshkka
h4tred
yndx-antoshkka, ну "без неё" можно подразумевать локаль C :-) это если локаль в форматер передаётся, а не используется текущая... давно не пользовался boost::format, не помню его интерфейса.
h4tred
h4tred
yndx-antoshkka, а вообще согласен, пару раз отгребал от полученных CSV файлов, в не POSIX локали.
h4tred
yndx-antoshkka
Вот эта библиотека предложена для включение в С++ fmtlib.net/latest/index.html

Вот proposal: open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0645r0.html

Предложение очень хорошо встретили в комитете, есть шансы что будет в C++20
yndx-antoshkka
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).