使用fstream构造函数和open函数之间的区别

jac*_*lau 5 c++ io fstream

我有一个关于fstream的构造函数和.open函数的简单问题.以下两个表达式之间是否有任何差异?

1

fstream("file.txt",ios::app);
Run Code Online (Sandbox Code Playgroud)

2

fstream fin;
fin.open("file.txt",ios::app);
Run Code Online (Sandbox Code Playgroud)

对于(1),我不需要再次使用.open函数了吗?两个表达式之间的任何功能差异?

我的第二个问题是,如果我将openmode留空,那么默认的开放模式是什么?

Ami*_*ory 8

两个片段后面的对象状态没有区别.

为什么有两个版本?

  1. 存在ctor是为了创建fstream与流直接关联的对象.

  2. open存在,因为这些类型的对象不能被复制.因此,您无法fstream通过编写以下内容将对象分配给其他流:

    fstream foo('bblskd');
    // ...
    foo = fstream('skdjf');
    
    Run Code Online (Sandbox Code Playgroud)

(注意,此接口是在移动语义之前设计的).


您可以在此处找到默认的打开模式.