C++文件与流的实验,我尽力了,找不到错,原谅我是新手,请帮我改一下源码

C++文件与流的实验,我尽力了,找不到错,原谅我是新手,请帮我改一下源码,第1张

#include <iostream>

#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()

}

希望能帮得到你


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12302261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存