gpt4 book ai didi

c++ - 从文件中读取行时出错

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:34 26 4
gpt4 key购买 nike

如果这个问题已经得到解答,我深表歉意,我尝试搜索但无法弄清楚为什么这不起作用。

我正在编写一个从文件中读取的程序,该文件包含一个名称后跟 5 个整数的行。我试图将名称读入一个字符串数组,然后将 5 个整数读入另一个数组。当我运行我的代码时,名字和前 5 个整数按预期读取,但是当循环继续时,没有其他任何东西被读入数组。

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;

int main()
{
int row, col, average, students = 0;
string storage;

string names[15];
double test[15][5];
double grade[15];

ifstream inFile;
ofstream outFile;

inFile.open("testScores.txt");
outFile.open("averages.out");

for (students; !inFile.eof(); students++)
{
//getline(inFile, storage, '\n');
inFile >> names[students];
for (col = 0; col <= 5; col++)
{
inFile >> test[students][col];
}
inFile.ignore('\n');

}

我知道使用命名空间 std 是不受欢迎的,但这正是我的老师希望我们完成代码的方式。我尝试在输入中添加一个忽略以跳到下一行,但这似乎没有用。我还尝试使用 getline 使用临时存储字符串,但不确定这是最好的方法。任何帮助将不胜感激。谢谢

输入文件-

    Johnson 85 83 77 91 76
Aniston 80 90 95 93 48
Cooper 78 81 11 90 73
Gupta 92 83 30 69 87
Blair 23 45 96 38 59
Clark 60 85 45 39 67
Kennedy 77 31 52 74 83
Bronson 93 94 89 77 97
Sunny 79 85 28 93 82
Smith 85 72 49 75 63

最佳答案

我使用了 getline 函数和一个 stringstream

使用 getline 更容易处理,因为你可以将 the 写在一个字符串中并修改或分析这个字符串

stringstream 是一种从字符串中提取数据的好方法

下面是我的做法

you have to include sstream

string line{""};

if (inFile.is_open()) {
while (getline(inFile,line)){
names[students] = line.substr(0, line.find(" "));
stringstream ss;
ss << line.substr(line.find(" "));

for(size_t i{0}; i < 5; ++i){
ss >> dec >> test[students][i];
}
++students;
}

inFile.close();
} else {
cout << "could not read file";
}

关于c++ - 从文件中读取行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45392045/

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