C++ 流打开模式组合

C++ stream openmode combinations

提问人:user673679 提问时间:3/12/2018 最后编辑:user673679 更新时间:3/12/2018 访问量:912

问:

C++ std::ios_base::openmode 标志是如何工作的,它们有什么作用?

更具体地说:

  • C++ 标准库中各种流/文件流对象的有效组合是什么?std::ios_base::openmode
  • 如果组合不正确会怎样?
  • 这些组合是否对应于作为参数传递给的各种 C 样式字符串:“rb”、“r+”等?如果是这样,哪些 C++ 标志对应于哪些 C 样式模式?fopenopenmode
C++ 文件-IO IOstream

评论

0赞 Raindrop7 3/12/2018
en.cppreference.com/w/cpp/header/fstream一定要只在这里提出问题。
0赞 user673679 3/12/2018
我知道这些课程。该链接不包含更多信息。

答:

3赞 rustyx 3/12/2018 #1

std::basic_filebuf::open 中所述,以下是有效的 openmode 组合:

  • 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"

任何其他组合都将导致失败。

评论

0赞 user673679 3/12/2018
谢谢。我想我会在另一个问题中问其他问题。
0赞 CuriousGeorge 5/2/2020
请参阅链接页面上的表格标题:“openmode & ~ate”