C++流开放模式组合

C++ stream openmode combinations

本文关键字:模式 组合 C++      更新时间:2023-10-16

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

更具体地说:

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

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