私はちょうど疑問に思っています。実際には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. イテレータ(std :: map)はC++でどのように動作しますか?
- 5. ファイルが開かれたかどうかによって、( 'fstream object')がtrueまたはfalseの値を返すのはどうでしょうか?
- 6. 配列スプレッド表記法はBabelのNodeListsでどのように動作するのでしょうか?
- 7. レイアウトXMLはどのように見えるでしょうか?
- 8. 各jarはどのようにLinuxやWindows上で動作するのでしょうか?
- 9. SQL Server:forループ内の列を動的に作成するにはどうすればよいでしょうか?
- 10. "return {...};"はC++ 11でどのように動作しますか?
- 11. チャイのテキスト文字列での動作はどうでしょうか?
- 12. node.js async.seriesは、それがどのように動作するのでしょうか?
- 13. のstd :: fstreamのエラー
- 14. 正確なWSDLファイルと、PHPとのAPI統合でどのように動作するのでしょうか?
- 15. どのようにしてPythonシェルを作るでしょうか?
- 16. インライン化はどのようにLLVMで動作しますか?
- 17. cin.peek()はC++でどのように動作しますか?
- 18. Meteorはどのように動作しますか?クライアントとサーバーはどのように動作しますか?
- 19. どのように私はbehatと偽の署名を作るでしょう
- 20. voidメソッド内でprintlnがどのように動作するのでしょうか?
- 21. scanner.next()はJavaでどのように動作しますか
- 22. にfflush - どのように最後の操作がStdから出力動作
- 23. std :: moveはlvalue参照で動作しますか? std :: moveは標準コンテナでどのように動作しますか?
- 24. コレクションをトラバースするには、集計操作をどのように行うのが良いでしょうか?
- 25. std :: endはネイティブ配列に対してどのように動作するのですか
- 26. LoadTreeはどのようにrootで動作しますか?
- 27. URLを作成するにはどうすればよいでしょう?
- 28. fstreamをC++のstd :: vectorにロードする
- 29. このC++コードはどのように動作しますか?
- 30. boost ::〜shared_ptrはどのように動作しますか?