通过声明fstream类对象来打开一个流文件有什么问题?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream ou("E:\\120701.txt", ios::in | ios::out);
if(!ou)
{
cout<<"file open fail!\n";
system("pause");
exit(1);
}
cout<<"open the file!\n";
system("pause");
return 0;
}
为什么不能打开文件?写成:
fstream ou("E:\\120701.txt", ios::in | ios::out | ios::app);
或
fstream ou("E:\\120701.txt", ios::in | ios::out | ios::app);
可以?
原来E盘根目录下不存在120701.txt文件。为什么程序不会默认创建一个新文件?
[最优解释]
与fopen一致的吧
r或者r+模式要求文件必须存在
ios::in
[其他解释]
貌似文本打开方式有2种,一种是二进制流,一种文本方式,用fstream应该只能是二进制方式打法。
[其他解释]
ios::out 就相当于 r+
[其他解释]
static const _Openmode in = (_Openmode)0x01;
static const _Openmode out = (_Openmode)0x02;
static const _Openmode ate = (_Openmode)0x04;
static const _Openmode app = (_Openmode)0x08;
static const _Openmode trunc = (_Openmode)0x10;
static const _Openmode _Nocreate = (_Openmode)_IOS_Nocreate;
static const _Openmode _Noreplace = (_Openmode)_IOS_Noreplace;
static const _Openmode binary = (_Openmode)_IOSbinary;