c ++ - fstream和ofstream

时间:2014-04-24 02:39:15

标签: c++ fstream ofstream

有什么区别:

fstream texfile;
textfile.open("Test.txt");

ofstream textfile;
textfile.open("Test.txt");

他们的功能是否相同?

2 个答案:

答案 0 :(得分:7)

ofstream只有输出方法,例如,如果您尝试textfile >> whatever则无法编译。 fstream可用于输入和输出,但可行的方法取决于传递给构造函数/ open的标志。

std::string s;
std::ofstream ostream("file");
std::fstream stream("file", stream.out);

ostream >> s; // compiler error
stream >> s; // no compiler error, but operation will fail.

评论有一些更好的观点。

答案 1 :(得分:0)

在cplusplus.com herehere上查看他们的网页。

ofstream继承自ostreamfstream继承自iostream,继承自istreamstream。通常ofstream仅支持输出操作(即textfile<<" hello"),而fstream支持输出和输入操作,但取决于打开文件时给出的标志。在您的示例中,默认情况下打开模式为ios_base::in | ios_base::outofstream的默认开放模式为ios_base::out。此外,始终为ofstream对象设置ios_base::out(即使显式未在参数模式中设置)。

ofstream仅用于输出,textfile仅用于输入,ifstream用于输入和输出,请fstream使用{{1}}。这使你的意图更加明显。