C ++では、
std::cout << 1.2;
実際に数値を表示するために呼び出される実際の関数のチェーンは何ですか?これはコンパイラ固有であることに気づきましたが、特にGnulibstdc++の実装に興味があります。
Cでは、printfを呼び出すとvfprintfに委任され、ジャンプテーブルを介してglibcの__printf_fpが呼び出されます。純粋なC++設定で類似のチェーンを探しています。
明らかに、最初にostream :: operator <<を呼び出しますが、それを超えるとライブラリ固有の場合があります。これに答える最良の方法は、コードをデバッグし、関数が発生したときにそれに従うことです。これにより、呼び出される関数がわかるだけでなく、発生するエッジケースとエラー処理についてもわかります。コードを見ると役立つかもしれませんが、複雑になる可能性があります。
このコードの使用:
std::cout << 1.2f;
...これがVisualStudio2012でノイズなしで何が行われるかです。
したがって、ほとんどの作業は実際にはnum_putファセットで行われ、出力ストリームのイテレータに書き込みます。