iostreamは入出力システムにどうやってアクセスしているのですか? (私は常に車輪を再発明するという習慣が悪いですし、iostreamのようなカスタム入出力システムを構築できるかどうかは疑問です)。<iostream>はどのように機能しますか? (C++)
答えて
IOstreamの詳細については、Standard C++ IOStreams and Localesを参照してください。それを読んだ後、私はあなたが現状で管理するのに満足すると思う - IOStreamsはおそらくC++標準ライブラリの最も複雑な部分です。
それは依存...
それは何らかの形で、オペレーティングシステムのネイティブIOシステムと対話します。カーネルへのシステムコールを使用するCライブラリを内部的に使用することも、システムコールを直接使用することもできます。正確な実装は、プラットフォームに大きく依存しています。
多くの人が車輪を再発明しないと言うでしょうが、それは良い学習体験になる可能性があります。 Windowsを使用している場合は、ファイル処理のためのWin32 API呼び出しを調べます。 Linuxを使用している場合は、POSIX/Cライブラリを使用するか、システムコールを使用します(はるかに難しく、Cライブラリを使うことをお勧めします)。
あなたは確かにホイールを再発明することができます。
国際的な文字セットを処理するために、ストリーム演算子には多くの問題があります。合理的に深くそれを見た後、私は本当にそれほど気にしなかった。これは非常に複雑で、継承を簡単に使用する可能性は完全に無くなります。それは動作し、しかし、利用可能です。 (コンバージョン時に使用するストレージの動作を変更したい)
すべてのストリームはstreambufに移動します。そのstreambufはストリームのタイプに依存します。 ofstreamはfstreambufに行きます。 coutは不特定のstreambufに行きます。あなたがものをカスタマイズしたい場合、coutはこのstreambufを取得し、おそらくそれを置き換えることを可能にします。
共通のパターンは、「フィルタリングstreambuf」です。これは、入力を別のstreambufに送信する前に変換するstreambufインターフェイスです。これはcoutと組み合わせることができます:元のstreambufを取り出し、それをフィルタリングstreambufでラップし、そのラッパーをcoutに戻します。オリジナルのstreambufの仕組みを知る必要はありません。
- 1. <*>の機能はどのように機能しますか?
- 2. Objective Cのallocはどのように機能しますか?
- 3. このCコードはどのように機能しますか?
- 4. C++のイテレータカテゴリはどのように機能しますか?
- 5. Objective CのCGContextFillPathはどのように機能しますか?
- 6. この機能はどのように機能しますか? char * getname(); C++
- 7. C offsetofマクロはどのように機能しますか?
- 8. Cストリームシステムはどのように機能しますか?
- 9. C++プリプロセッサはどのように機能しますか?
- 10. Objective Cでプロトコルはどのように機能しますか?
- 11. ポーリング機能はどのようにcで機能しますか?
- 12. ソケットキープアライブ拡張機能はどのように機能しますか? C#
- 13. logstash kv {}機能はどのように機能しますか?
- 14. WatchKit:ディクテーション機能はどのように機能しますか?
- 15. 機能はどのように機能しますか?
- 16. cファイルでfwrite()がどのように機能しますか?
- 17. C#でFileAttributes.Encryptedがどのように機能しますか?
- 18. Schemeではコレクタ機能はどのように機能しますか?
- 19. Erlangのsofs:partitionsはどのように機能しますか?
- 20. このアルゴリズムはどのように機能しますか?
- 21. 空()分離はどのように機能しますか?
- 22. このMakefileはどのように機能しますか?
- 23. Rで `[< - `関数はどのように機能しますか?
- 24. ObservableCollection <T> .Move(int、int)はどのように機能しますか?
- 25. どのようにFunc <T,TResult>は機能しますか?
- 26. ThreadLocal <T> :: getMapはどのように機能しますか?
- 27. QMake:スコープはどのように機能しますか?
- 28. reference_wrapperとstd :: refはどのように機能しますか?
- 29. back_inserterはどのように機能しますか?
- 30. for x():これはどのように機能しますか?