#include <fstream>
#include <string>
using namespace std//命名空间要加,不然string都得这样 std::string
// 设计一个学生类,包含数据成员:姓名、学号、3门课的成绩,
// 并有相应的成员函数,如春哗print(),构造函数,sum()、aver()函数等。
// 要求在主函数中创建学生对象,
// 并把学生的信息写入到文件中,
// 并将总分和平均成绩也写入到该文件中。
class Student
{
public:
string name
int num
int score1
int score2
int score3
public:
Student (string na,int n,int s1,int s2,int s3)
{
name=na
num=n
score1=s1
score2=s2
score3=s3
}
int sum()
{
return score1+score2+score3
}
int aver()
{
return sum()/3
}
void print()//print需要返回类型
{
cout<<name<<num<<score1<<score2<<陪洞score3
}
}
int main()
{
Student s("刘德华",1,2,3,4)
ofstream out("student.txt")
if(out.is_open())
{
out<<s.name
out<<s.num
out<<s.score1
out<<s.score2
out<<s.score3
out<<s.sum()
out<<s.aver()//aver是函扒乱行数不是变量
out.close()
}
return 0}
你的问题是你先往文件流里面写东西了file<<"abcdefghijklmnopqrstuvwxyz"
写完以后你又读文件流里面的东西
file.seekg(-1,ios::cur)
if(file.get()!='\n')
然后你又春唯往里面枝弯写东西
t = file.tellg()的作用是获取当前读文件流指针的位置
没有这个文件流指针就丢了
你就没有办法再往里面写任何东西不是什么endl和\n的问题你可以试任何字符串都是写不进去的
因为文件指针丢猛森闷了
读完东西又要写东西你就要告诉系统当前指针在那里否则系统不知道往哪里写!
你可以单步跟踪这段代码(按f10)这样你会明白的了
void main()
{
int t
fstream file
file.open("ABC",ios::in|ios::out|ios::binary)
t = file.tellg()//t=0文件流指针位置为0
file<<"abcdefghijklmnopqrstuvwxyz"
t = file.tellg()//t=26文件流指针位置为26
file.seekg(-1,ios::cur)
t = file.tellg()//t=25往前移了一个字节文件流指针位置为25
if(file.get()!='\n')
{
file<<endl
t = file.tellg()//t=-1文件流指针丢失
}
file<<"OK!"
file.close()
}
希望能帮得到你
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)