在 C++ 中,当我这样做时
std::cout << 1.2;
被调用以实际显示数字的实际函数链是什么?我意识到这是特定于编译器的,但我对 Gnu libstdc++ 实现特别感兴趣。
在 C 中,调用 printf 代表 vfprintf,它通过跳转表调用 glibc 中的 __printf_fp。我正在寻找纯 C++ 设置中的类似链。
显然,它将首先调用ostream::operator<<但除此之外它可能是特定于库的。回答这个问题的最佳方法是调试代码并在功能出现时跟踪它们。这不仅会告诉您调用了哪些函数,还会告诉您发生的边缘情况和错误处理。查看代码可能会有所帮助,但它可能很复杂。
使用此代码:
std::cout << 1.2f;
...这是 Visual Studio 2012 中没有噪音的情况:
所以大部分工作实际上是在 num_put 方面完成的,它写入输出流的迭代器。