fstream 的 open方法使用的问题

piaoxu7777777 2010-10-14 09:56:06
fstream fs;
fs.open("cccc", ios::in);
if (!fs)
{
fs.close();
fs.open("cccc", ios::out);
if (!fs)
{
cout << "文件打开失败";
}
else{
fs << "def" ;
fs.close();
}
}
fs.close();

目的是这样的:以读的方式打开cccc这个文件,如果打开失败。就以写的方式打开文件,同时向里面输入def三个字母。
运行的结果是:读操作失败后,以写的方式打开文件,文件被创建了,但def没有被写进去,实际情况是文件打开失败。
open()方法不能重复使用么?
...全文
412 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-10-14
  • 打赏
  • 举报
回复
摒弃fstream
使用FILE *
gules 2010-10-14
  • 打赏
  • 举报
回复
读文件用ifstream,写文件用ofstream
hastings 2010-10-14
  • 打赏
  • 举报
回复
看来得亲自附上代码:
int main()
{
std::fstream fs;
fs.open("cccc", std::ios::in);
if (!fs)
{
fs.clear();
// fs.close();//去掉
fs.open("cccc", std::ios::out);
if (!fs)
{
cout << "文件打开失败 std::ios::out\n";
}
else
{
fs << "def" ;
fs.close();
}
}
else
{
cout << "文件打开成功 std::ios::in\n";
fs.close();
}
return 0;
}
piaoxu7777777 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hastings 的回复:]
if (!fs)之后记得fs.clear();来清除错误;!!!
[/Quote]

也试过clear() 进行错误位清除,没有改正过来,还是老样子
hastings 2010-10-14
  • 打赏
  • 举报
回复
if (!fs)之后记得fs.clear();来清除错误;!!!
Rainqin123 2010-10-14
  • 打赏
  • 举报
回复
fopen_s....类似于...
piaoxu7777777 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
不要重用fstream对象。
[/Quote]

重复使用会出现问题?
taodm 2010-10-14
  • 打赏
  • 举报
回复
不要重用fstream对象。

64,666

社区成员

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

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