【发布时间】:2021-12-04 20:36:39
【问题描述】:
我尝试为我的作业编写代码。它没有显示任何错误,但是当我从文件中读取输入时,将它们保存在对象数组中,然后,我试图将写入值放入输出文件。数据是我想写的那个对象,但输出txt中没有写任何东西。我找不到问题。
输入的txt文件格式
| 2 | //number of students |
| 3 | // number of grades (per student) |
| Student1 99 87 90 | // / name grade grade grade |
| Student2 50 67 95 |
代码写在下面
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
using namespace std;
class Student
{
private:
string name;
int grade1;
int grade2;
int grade3;
float avg;
public:
Student()
{
name = "\0";
grade1 = grade2 = grade3 = avg = 0;
}
void setname(string Name)
{
name = Name;
}
void setgrade1(int num)
{
grade1 = num;
}
void setgrade2(int num)
{
grade2 = num;
}
void setgrade3(int num)
{
grade3 = num;
}
void AVG()
{
avg = (grade1 + grade2 + grade3) / 3;
}
float getAVG()
{
return avg;
}
string getName()
{
return name;
}
};
int main()
{
char ch = '\0';
char pre = '\0';
Student S[3];
int totalstudents = 0;
int totalgrades = 0;
cout << "Enter file name including " ", e.g \"myFile.txt\" :" << endl;
string file;
cin >> file;
fstream myFile;
int loop = 0;
int loop2 = 0;
myFile.open(file);
{
while (myFile.get(ch))
{
if (loop != 1)
{
myFile >> totalstudents >> totalgrades;
loop++;
}
string namE;
int g1, g2, g3;
myFile >> namE >> g1 >> g2 >> g3;
S[loop2].setname(namE);
S[loop2].setgrade1(g1);
S[loop2].setgrade2(g2);
S[loop2].setgrade3(g3);
S[loop2].AVG();
loop2++;
if (loop2 == totalstudents)
break;
}
}
myFile.close();
fstream myFile2;
myFile2.open("fout.txt");
{
for (int loop = 0; loop < totalstudents; loop++)
{
myFile << S[loop].getName() << "\t" << S[loop].getAVG() << endl;
}
};
myFile2.close();
_getch();
}
【问题讨论】:
-
使用调试器找出你的代码在做什么。不要只在调试器中运行您的代码,一次单步执行 1 行代码,查看变量并在每个步骤中流动。
标签: c++ visual-studio-2010 visual-c++