繁体   English   中英

当使用 output 文件 stream 指定 ios::in 模式时会发生什么?

[英]What happens when ios::in mode is specified with an output file stream?

在 c++ 中创建文件流时, ios::inios::out模式的目的是什么? 我创建了一个 output 文件 stream 作为ofstream myout("file.txt",ios::in); 这是一个 output 文件 stream 但指定ios::in模式。 ios::in模式在 output stream 和类似ios::out模式在输入文件 stream 中的作用是什么?

我看过here ,但无法理解。

根据std::basic_filebuf<CharT,Traits>::open() ,它更好地解释了各种标志组合的实际作用:

文件的打开方式如同调用std::fopen ,第二个参数(模式)确定如下:

模式 打开模式 & ~ate 文件已存在时的操作 文件不存在时的操作
“r” in 从头开始阅读 打不开
“w” outout|trunc 销毁内容 创建新的
“一种” appout|app Append 归档 创建新的
“r+” out|in 从头开始阅读 错误
“w+” out|in|trunc 销毁内容 创建新的
“一个+” out|in|appin|app 写到最后 创建新的
“rb” binary|in 从头开始阅读 打不开
“wb” binary|outbinary|out|trunc 销毁内容 创建新的
“ab” binary|appbinary|out|app 写到最后 创建新的
“r+b” binary|out|in 从头开始阅读 错误
“w+b” binary|out|in|trunc 销毁内容 创建新的
“a+b” binary|out|in|appbinary|in|app 写到最后 创建新的

如果openmode不是列出的模式之一,则open()失败。

如果打开操作成功并且openmode & std::ios_base::ate != 0 (设置了 ate 位),则将文件 position 重新定位到文件末尾,如同通过调用std::fseek(file, 0, SEEK_END) ,其中file是通过调用fopen返回的指针。 如果重新定位失败,则调用close()并返回一个 null 指针以指示失败。

如果关联文件已经打开,则立即返回 null 指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM