有什么区别:
fstream texfile;
textfile.open("Test.txt");
和
ofstream textfile;
textfile.open("Test.txt");
他们的功能是否相同?
答案 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 here和here上查看他们的网页。
ofstream
继承自ostream
。 fstream
继承自iostream
,继承自istream
和stream
。通常ofstream
仅支持输出操作(即textfile<<" hello"),而fstream
支持输出和输入操作,但取决于打开文件时给出的标志。在您的示例中,默认情况下打开模式为ios_base::in | ios_base::out
。 ofstream
的默认开放模式为ios_base::out
。此外,始终为ofstream对象设置ios_base::out
(即使显式未在参数模式中设置)。
ofstream
仅用于输出,textfile
仅用于输入,ifstream
用于输入和输出,请fstream
使用{{1}}。这使你的意图更加明显。