В C ++, когда я делаю
std::cout << 1.2;
какова фактическая цепочка функций, вызываемых для отображения числа? Я понимаю, что это зависит от компилятора, но меня особенно интересует реализация Gnu libstdc ++.
В C вызов printf делегатов для vfprintf, который через таблицы переходов вызывает __printf_fp в glibc. Я ищу аналогичную цепочку в чистом C ++.
Понятно, это вызовет ostream :: оператор<< во-первых, но это может быть специфичным для библиотеки за этим. Лучший способ ответить на этот вопрос — отладить код и следить за функциями по мере их появления. Это не только скажет вам, какие функции вызываются, но и расскажет вам о крайних случаях и обработке ошибок, которые происходят. Глядя на код может помочь, но это, вероятно, запутанным.
Используя этот код:
std::cout << 1.2f;
… Вот что делает Visual Studio 2012 без шума:
Таким образом, большая часть работы фактически выполняется в фасете num_put, который записывает в итератор для выходного потока.
Других решений пока нет …