C++ 我用的fstream打开,结果读完后却写不进去了,无法输入新的成绩
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 我用的fstream打开,结果读完后却写不进去了,无法输入新的成绩相关的知识,希望对你有一定的参考价值。
fstream file("grade.txt",ios::app|ios::in);
if(!file)
cerr<<"open error!"<<endl;
exit(1);
long int num = 1;
float score;
while(num != 0)
cout<<"输入学号(按0停止输入):";
cin>>num;
if(num == 0)
break;
string s_sub;
long int s_num;
int s_class;
float s_score;
bool judge = 0;
while(file>>s_num>>s_sub>>s_class>>s_score)
if(s_num == num && s_sub == subject)
cout<<"该学生"<<s_sub<<"成绩已经录入。"<<endl;
judge++;
break;
if(judge)
continue;
else
file<<num<<endl;
file<<subject<<endl;
file<<grade<<endl;
cout<<"输入成绩:";
cin>>score;
file<<score<<endl;
file.close();
#include<iostream>
#include<fstream>
using namespace std;
int main()
int i;
fstream welen;
welen.open("d:\welen.txt");
welen >> i;
cout << i << endl;
1 welen.clear();
2 welen.seekp(0,ios::beg);
welen << "welenwho";
welen.close();
system("pause");
return 0;
将上面程序的1和2中的任意一条注释掉都无法写入,但是同时出现就可以了。 参考技术A 因为你打开的时候只是in的方式,只可以读,应该是ios::in|ios::out|ios::app的方式,这样才可以进行读和写的操作。 参考技术B 你读完文件之后要把文件关闭file.close(),写之前再打开file.open(),你试试!追问
那就不用用fstream了,我就是想读完后直接在文件末尾接着写,然后指针移到文件开头再读。不用一直打开、关闭。
追答你关闭文件,写入的 时候也是追加啊!再打开的时候指针重新返回到文件开头,为什么非得自己去移动指针的,还非常容易出错!再说,读完是要关闭文件的!
参考技术C 你是不是用只读的方式打开文件??fstream file("grade.txt",ios::app|ios::in);追问app是写,in是读,是全部读完后就没法再写入了
追答我看错了,具体我也不明,给个网址你参考参考吧。http://www.cplusplus.com/reference/iostream/fstream/fstream/
以上是关于C++ 我用的fstream打开,结果读完后却写不进去了,无法输入新的成绩的主要内容,如果未能解决你的问题,请参考以下文章
解决 微信包含emoji表情的昵称,直接用sql语句可以写入而在yii2框架写却写不成功的 问题