打开文件时如果文件不存在,则创建,那么对于fstream,ifstream,ofstream,怎样设置文件模式

xunyingren 2009-03-08 09:38:29
打开文件时如果文件不存在,则创建,那么对于fstream,ifstream,ofstream
其文件模式应该是什么?

我试验了一下,如下能在文件不存在时创建

ifstream file;
file.open(("t.txt",ifstream::out/*|fstream::in*/|ifstream::app);
或file.open(("t.txt",ifstream::out/*|fstream::in*/|ifstream::trunc);

fstream file1;
file1.open("tt.txt",fstream::out/*|fstream::in|fstream::trunc*/);

ofstream file2;
file2.open("y.txt"/*,ofstream::out|fstream::in|ofstream::trunc*/);

(1)打开文件时如果文件不存在,则创建,那么对于fstream,ifstream,ofstream,
其文件模式应该怎样设置(我如上的模式设置有没有错)?
(2)为什么ifstream只使用ifstream::out,不会自动创建文件?
(3) 还有像
fstream file1;
file1.open("tt.txt",fstream::out);
这里是不是不一定使用fstream::out,也可使用ifstream::out 或ofstream::out?
fstream::out,ifstream::out ,ofstream::out 是不是对应同一个常数?


...全文
7738 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingtianxia710 2010-12-10
  • 打赏
  • 举报
回复
ifstream(fstream) f("c:\\a.txt");(VC6.0必须有两个反斜杠)如果文件不存在,不会创建文件。此时if(!f)成立。可以用来测试有无文件。使用ostream实例化流对象,如果文件不存在,则立即创建一个文件;如果存在文件,则会清空原文件中的内容。
根据上述两者的区别:打开的文件模式中有ios::in,则若文件不存在,不会创建文件。
ofstream fin("c:\\a.txt",ios::in);对于这句,若后面不使用fin,则编译可以通过,若使用fin

,编译通不过,事实上,这句代码没有意义。
使用open函数打开文件同上。
xunyingren 2009-03-15
  • 打赏
  • 举报
回复
ifstream 流打开文件用的是(默认)ios::in 意思是从文件中读取,文件不存在时,会创建
ofstream 流打开文件用的是(默认)ios::on 意思是写入文件中,文件不存在时,会创建
fstream 流都可以用

你试过没有,我按你说的怎么不能文件不存在时创建
,只按我说的那样做才行
bluespark 2009-03-15
  • 打赏
  • 举报
回复
ofstream fout("test.txt");
if (!fout){
cerr<<"Error opening test.txt for writing\n";
exit(1);
}


ifstream fin("test2.txt");
if(!fin){
cerr<<"Error opening test2.txt for reading\n";
exit(1);
}

  • 打赏
  • 举报
回复
http://my.donews.com/bright/2006/08/
几种模式这里描述得很清楚了.
jssz103b 2009-03-09
  • 打赏
  • 举报
回复
ifstream 流打开文件用的是(默认)ios::in 意思是从文件中读取,文件不存在时,会创建
ofstream 流打开文件用的是(默认)ios::on 意思是写入文件中,文件不存在时,会创建
fstream 流都可以用
flameearth 2009-03-09
  • 打赏
  • 举报
回复
ios::app 后面添加
ios::ate 打开并找到文件尾
ios::binary 二进制模式
ios::in 只读
ios::out 写
ios::trunc 将文件截为 0 长度
使用:
ofstream file(”login.dat”, ios::binary | ios::app);

ysysbaobei 2009-03-09
  • 打赏
  • 举报
回复
josephwuxiaameng 2009-03-08
  • 打赏
  • 举报
回复
ifstream in;
ofstream out;
in.open("C:\\temp\\q.txt");
if(in.fail ())
{
out.open("C:\\temp\\q.txt");
};
//具体的我也不是很清楚
//不过可以试试这个方法
//我只对WinAPI编程中的相关方法了解一些
//C++SL中的方法可以查查别的书
//对不住了!

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧