在C ++中,我做的时候
std::cout << 1.2;
实际显示数字的实际函数链是什么?我意识到这是特定于编译器的,但我特别感兴趣的是Gnu libstdc ++实现。
在C中,调用printf委托给vfprintf,它通过跳转表在glibc中调用__printf_fp。我正在寻找纯C ++设置中的类似链。
答案 0 :(得分:2)
显然,它会首先调用ostream::operator<<,但除此之外它可能是特定于库的。回答这个问题的最好方法是调试代码并在函数发生时跟踪它们。这不仅会告诉您调用哪些函数,还会告诉您有关边缘情况和错误处理的信息。查看代码可能会有所帮助,但可能会令人费解。
使用此代码:
std::cout << 1.2f;
...这里是没有噪音的Visual Studio 2012中的内容:
因此,大部分工作实际上是在num_put facet中完成的,该facet写入输出流的迭代器。