读取文本文件c++(不能显示其他行)
Reading text file c++ (not able to display other lines)
char fname[20];
char lname[20];
int grade[10];
double avg=0.00;
fstream infile("C:\Users\Hady Zn\Desktop\hady.txt", ios::in);
fstream outfile("C:\Users\Hady Zn\Desktop\hady1.txt", ios::out);
while(infile>>fname>>lname)
{
outfile<<fname<<" "<<lname<<" ";
for(int i=0; i<10; i++)
grade[i]=0;
for(int i=0; i<10; i++)
{
infile>>grade[i];
if(grade[i]>=0 && grade[i]<=100)
{
outfile<<grade[i]<<" ";
avg+=grade[i];
}
}
outfile<<avg/10.00<<endl;
avg=0.00;
}
所以问题是,我需要从文本文件中读取姓氏(空格)名(空格),然后10个测验成绩(每个年级之间的空格),并将相同的数据写入输出文件,在行的每端平均有10个测验。我面临的问题是,如果我在一行上有少于10个测验,它将不显示剩余的行。(我希望它仍然给我的平均成绩考虑,例如,如果我被给予7个等级3将是零)我试图解决它,但它只是不会工作。有什么办法可以解决这个问题吗?请帮助。谢谢你
为了执行这种检查,最好从输入文件中逐行读取文本,并处理每行以提取数据。
string line
while ( getline(infile, line) )
{
istringstream sstream(line);
sstream >> fname >> lname;
if (!sstream )
{
continue;
}
outfile<<fname<<" "<<lname<<" ";
for(int i=0; i<10; i++)
{
grade[i]=0;
sstream>>grade[i];
if ( !sstream )
{
break;
}
if(grade[i]>=0 && grade[i]<=100)
{
outfile<<grade[i]<<" ";
avg+=grade[i];
}
}
}
更新,以回应OP的评论:
可以避免逐行读取输入文件并处理每一行。以下是我对循环的修改建议。
while(infile>>fname>>lname)
{
outfile<<fname<<" "<<lname<<" ";
for(int i=0; i<10; i++)
{
grade[i]=0;
infile>>grade[i];
if ( !infile )
{
infile.clear();
break;
}
if(grade[i]>=0 && grade[i]<=100)
{
outfile<<grade[i]<<" ";
avg+=grade[i];
}
}
outfile<<avg/10.00<<endl;
avg=0.00;
}
相关文章:
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- QSqlRelationalTable如何在具有外键的列中显示其他表的值
- 错误 LNK1104:错误消息中显示的路径未在其他依赖项中定义
- 通过屏蔽 UI 中的所有其他控件,在 UWP 应用 (c++) 中的现有 MainPage.xaml 顶部显示进度条
- 是否有类型特征显示一种类型是否可能包含其他类型的值
- 如何将OpenCV的输出显示或流式传输到HTML页面或其他一些客户端应用程序
- 使用 main() 以外的其他函数显示类的对象,但在 main() 中调用;
- 显示未显示QT其他类的文本框
- 显示主窗体 Qt C++ 中的其他窗体
- 无法在Windows对话框上显示其他Unicode Eastern Lanuage
- Doxygen 不显示如何从其他类调用记录的成员函数(包括构造函数)
- 如何只插入数字和字母应该显示消息或其他内容
- 如果不是,如何停止显示来自其他的消息
- 如何在Qt中显示其他应用程序的输出视频
- 静态类在其他类之间不显示相同的值
- 当键入指定单词作为第一个字母时显示输出,并忽略后面的其他单词
- 我的函数显示垃圾,其他时候它显示干净的结果
- 如何在程序的内存中搜索图像/png/jpeg/任何其他类型并显示它
- 用于c++ 11的Vim语法高亮显示不会混淆其他高亮显示.例如,类/命名空间作用域
- 读取文本文件c++(不能显示其他行)