C++流openmode组合
C++ stream openmode combinations
C++ std::ios_base::openmode
flags 是如何工作的,它们有什么作用?
更具体地说:
- 对于 C++ 标准库中的各种流/文件流对象,
std::ios_base::openmode
的有效组合是什么?
- 如果组合不正确会怎样?
- 这些组合是否对应于作为参数传递给
fopen
的各种 C 风格字符串:"rb"、"r+" 等?如果是这样,哪些 C++ openmode
标志对应于哪些 C 样式模式?
如 std::basic_filebuf::open 中所述,以下是有效的打开模式组合:
in
,相当于"r"
out
,相当于"w"
app
,相当于"a"
out|in
,相当于"r+"
out|in|trunc
,相当于"w+"
out|in|app
,相当于"a+"
binary|in
,相当于"rb"
binary|out
,相当于"wb"
binary|app
,相当于"ab"
binary|out|in
,相当于"r+b"
binary|out|in|trunc
,相当于"w+b"
binary|out|in|app
,相当于"a+b"
任何其他组合都将导致失败。
C++ std::ios_base::openmode
flags 是如何工作的,它们有什么作用?
更具体地说:
- 对于 C++ 标准库中的各种流/文件流对象,
std::ios_base::openmode
的有效组合是什么? - 如果组合不正确会怎样?
- 这些组合是否对应于作为参数传递给
fopen
的各种 C 风格字符串:"rb"、"r+" 等?如果是这样,哪些 C++openmode
标志对应于哪些 C 样式模式?
如 std::basic_filebuf::open 中所述,以下是有效的打开模式组合:
in
,相当于"r"
out
,相当于"w"
app
,相当于"a"
out|in
,相当于"r+"
out|in|trunc
,相当于"w+"
out|in|app
,相当于"a+"
binary|in
,相当于"rb"
binary|out
,相当于"wb"
binary|app
,相当于"ab"
binary|out|in
,相当于"r+b"
binary|out|in|trunc
,相当于"w+b"
binary|out|in|app
,相当于"a+b"
任何其他组合都将导致失败。