gpt4 book ai didi

c++ - 从文件读取后输出中有额外的零行

转载 作者:行者123 更新时间:2023-11-28 06:17:17 27 4
gpt4 key购买 nike

我是一名尝试学习 C++ 的初级程序员。我正在尝试从文件中读取以下信息:

迪恩·德菲诺 88 98 99
莎莉·约翰逊 78 89 82
比尔·本尼 75 79 81
托马斯·比罗斯 78 84 89

但是,我得到以下输出,但我不明白为什么:

迪恩·德菲诺 88 98 99
0 0 0
莎莉·约翰逊 78 89 82
0 0 0

代码如下:

#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

const int NAMESIZE = 15;
const int MAXRECORDS = 50;
struct Grades // declares a structure
{
char name[NAMESIZE + 1];
int test1;
int test2;
int final;

};

typedef Grades gradeType[MAXRECORDS];
// This makes gradeType a data type
// that holds MAXRECORDS
// Grades structures.

void readIt(ifstream&, gradeType, const int);

int main()

{
ifstream indata;
indata.open("graderoll.dat");
int numRecord = 4;
gradeType studentRecord;

if(!indata)
{
cout << "Error opening file. \n";
cout << "It may not exist where indicated" << endl;
return 1;
}

readIt(indata, studentRecord, MAXRECORDS);

// output the information
for (int count = 0; count < numRecord; count++)
{
cout << studentRecord[count].name << setw(10)
<< studentRecord[count].test1
<< setw(10) << studentRecord[count].test2;
cout << setw(10) << studentRecord[count].final << endl;
}

return 0;
}

void readIt(ifstream& inData, gradeType gradeRec, const int max)

{
int total = 0;

inData.get(gradeRec[total].name, NAMESIZE);
while (inData)
{
inData >> gradeRec[total].test1;
inData >> gradeRec[total].test2;
inData >> gradeRec[total].final;

total++;

inData.clear();
inData.get(gradeRec[total].name, NAMESIZE);


}

}

有什么建议可以帮助我解决这个问题吗?

最佳答案

我解决了这个问题:

void readIt(ifstream& inData, gradeType gradeRec, const int max)

{
int total = 0;

inData.get(gradeRec[total].name, NAMESIZE);
while (inData)
{
inData >> gradeRec[total].test1;
inData >> gradeRec[total].test2;
inData >> gradeRec[total].final;

total++;

inData.ignore(NAMESIZE, '\n');
inData.get(gradeRec[total].name, NAMESIZE);


}

}

inData.ignore(NAMESIZE, '\n'); 将使字符数组正常工作。这是因为字符数组限制为 15 个字符。因此,如果指定忽略接下来的 15 个字符和/或直到遇到换行符转义序列,文件的每一行都会被正确读取。

关于c++ - 从文件读取后输出中有额外的零行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019526/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com