我是 C++ 新手,在从文本文件中读取数据行时遇到了一些麻烦。假设我在文本文件中有未知数量的行,每一行的格式相同: int string double 。唯一可以确定的是空格将分隔给定行上的每条数据。我正在使用结构数组来存储数据。下面的代码效果很好,只是它在每个循环后跳过了一行输入。我尝试插入各种 ignore() 语句,但仍然无法让它读取每一行,只能读取隔行。如果我在最后重写了一些 getline 语句,那么在第一个循环之后开始为变量存储错误的数据。
文本文件可能如下所示:
18 JIMMY 71.5
32 TOM 68.25
27 SARAH 61.4
//code
struct PersonInfo
{
int age;
string name;
double height;
};
//..... fstream inputFile; string input;
PersonInfo *people;
people = new PersonInfo[50];
int ix = 0;
getline(inputFile, input, ' ');
while(inputFile)
{
people[ix].age = atoi(input.c_str());
getline(inputFile, input, ' ');
people[ix].name = input;
getline(inputFile, input, ' ');
people[ix].height = atof(input.c_str());
ix++;
getline(inputFile, input, '\n');
getline(inputFile, input, ' ');
}
我确信有更高级的方法可以做到这一点,但就像我说的那样,我对 C++ 还是很陌生,所以如果对上面的代码稍作修改,那就太好了。谢谢!