私はちょうど疑問に思っています。実際にはstd::fstream
が開かれて、実際にはstd::ios::in
とstd::ios::out
の両方が動作するはずですか?それは何をすべきか?何かを(例えば)空のファイルに書いてから、何を読むか?ちょうど書かれた価値?ファイル "ポインタ"/"カーソル"はどこにありますか?多分答えはすでに出ているかもしれませんが、私はそれを見つけられませんでした。std :: fstreamはどのように動作するのでしょうか?
答えて
std::fstream
とは何ですか?
std::fstream
は、双方向ファイルストリームクラスです。つまり、ファイルの入力と出力の両方のインタフェースを提供します。これは、ユーザーが同じ外部シーケンスに対して読み書きする必要がある場合によく使用されます。
(std::ofstream
またはstd::ifstream
とは異なり)、双方向ファイルストリームをインスタンス化し、openmodes ios_base::in
とios_base::out
は、デフォルトでを指定しています。
std::fstream f("test.txt", std::ios_base::in | std::ios_base::out);
が、彼らはまた、いくつかの非デフォルトopenmodesを追加するために、必要に応じて両方のオプションを指定します
std::fstream f("test.txt");
一つとして同じになるようtrunc
、ate
、app
、またはbinary
など:これは、このことを意味します。 ios_base::in
openmodeは新しいファイルの作成を無効にするため、にという新しいファイルを作成する場合は、ios_base::trunc
オープンモードが必要です。
双方向I/O
双方向I/Oは、入力と出力の両方のための双方向ストリームの利用です。 IOStreamsでは、標準ストリームは文字列をバッファに保持します。バッファの文字列は、データのソースまたはシンクとして機能します。出力ストリームには、 "put"領域(出力のための文字を保持するバッファ)があります。同様に、入力ストリームの場合、「取得」領域があります。
(入力と出力の両方のクラス)の場合、getとputの両方の領域をそれぞれ表す結合ファイルバッファを保持します。ファイル内の現在の位置を示す位置インジケータは、入力操作と出力操作の両方によって影響を受けます。そのため、双方向ストリーム上で正しくI/Oを実行するために、あなたが従わなければならない一定のルールがあります。
- あなたが書き込みまたはその逆の後に読み取りを実行すると、ストリームが戻って再配置する必要があります。
- 入力操作でファイルの終わりがヒットした場合は、その後に直接書き込みを実行すると問題はありません。
これはstd::fstream
を参照してください。上記のルールはstd::stringstream
では必要ありません。
これらの質問にお答えいただければ幸いです。それ以上あれば、コメントに尋ねることができます。
- 1. MacOSでのC++ std :: fstreamの動作
- 2. std :: vectorのコピーコンストラクタはどのように動作しますか?
- 3. はどのように実際に動作MIPSにLWのでしょうか?
- 4. ファイルが開かれたかどうかによって、( 'fstream object')がtrueまたはfalseの値を返すのはどうでしょうか?
- 5. レイアウトXMLはどのように見えるでしょうか?
- 6. node.js async.seriesは、それがどのように動作するのでしょうか?
- 7. のstd :: fstreamのエラー
- 8. インライン化はどのようにLLVMで動作しますか?
- 9. どのようにしてPythonシェルを作るでしょうか?
- 10. Meteorはどのように動作しますか?クライアントとサーバーはどのように動作しますか?
- 11. にfflush - どのように最後の操作がStdから出力動作
- 12. fstreamをC++のstd :: vectorにロードする
- 13. boost ::〜shared_ptrはどのように動作しますか?
- 14. どのようasync.parallel作業中のコールバックは、(それはどこから来るのでしょうか?)ん
- 15. decltypeは演算子でどのように動作するのですか?
- 16. Makefileでは、VPATHはどのように動作しますか?
- 17. はどのようにAOPは、データバインディングに役立つのでしょうか?
- 18. recwatchはどのように動作するはずですか?
- 19. ディスパッチキューはどのように動作するのですか
- 20. @tailrecはどのように動作するのですか
- 21. model_path()メソッドはどのように動作するのですか?
- 22. TCLでこれがどのように機能するのでしょうか?
- 23. コンポジットパターンは、ちょうどアレイに私をもたらすのでしょうか?
- 24. クラスキャッシュはどのようにレールで動作しますか?
- 25. fprintfはC++でどのように動作しますか?
- 26. Server ExtensionsはどのようにXで動作しますか?
- 27. requirejsはどのように子ページで動作しますか?
- 28. ランダムグラフジェネレータはnetworkxでどのように動作しますか?
- 29. InputStreamReader.close()はどのように中間で動作しますか?
- 30. モデルイベントバインディングはどのようにbackbone.jsで動作しますか?