Документация по формату Boostn гласит:
Одна из его целей — предоставить замену printf, что означает, что format может анализировать строку формата, предназначенную для printf, применять ее к заданным аргументам и давать тот же результат, что и printf.
Когда я сравниваю вывод boost:format и printf, используя одну и ту же строку формата, я получаю разные результаты. Онлайн-пример здесь
#include <iostream>
#include <boost/format.hpp>
int main()
{
boost::format f("BoostFormat:%d:%X:%c:%d");
unsigned char cr =65; //'A'
int cr2i = int(cr);
f % cr % cr % cr % cr2i;
std::cout << f << std::endl;
printf("Printf:%d:%X:%c:%d",cr,cr,cr,cr2i);
}
Результат:
BoostFormat: A:A:A:65
печать: 65:41:A:65
Разница в том, что я хочу отображать char как интегральный тип.
Почему такая разница? Это ошибка или нежелательное поведение?