我刚开始想知道 - 如何实际std::fstream打开这两个std::ios::in并且std::ios::out实际上应该工作?它该怎么办?写一些东西(例如)一个空文件,然后读......什么?刚写的价值?文件"指针"/"光标"在哪里?也许答案已经在那里,但我无法找到它.
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);
Run Code Online (Sandbox Code Playgroud)
是相同的
std::fstream f("test.txt");
Run Code Online (Sandbox Code Playgroud)
如果他们需要还增加了一些非默认openmodes比如人们会指定这两个选项trunc,ate,app,或binary.的ios_base::trunc,如果你打算需要用于openmode 创建双向I/O的新文件,因为ios_base::in用于openmode禁用新文件的创建.
双向I/O是对输入和输出使用双向流.在IOStreams中,标准流将其字符序列保存在缓冲区中,在缓冲区中,它用作数据的源或接收器.对于输出流,有一个"put"区域(保存输出字符的缓冲区).同样,对于输入流,还有"获取"区域.
在std::fstream(输入和输出的类)的情况下,它保存一个联合文件缓冲区,分别代表get和put区域.标记文件中当前位置的位置指示器受输入和输出操作的影响.因此,为了在双向流上正确执行I/O,您必须遵循某些规则:
这只是指std::fstream.不需要上述规则std::stringstream.
我希望这些能回答你的问题.如果您还有,您可以在评论中提问.
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |