[英]How do I read a text file into an array of pointers? (C++)
我需要做的是将文本文件读入数组。 每行包括四个部分。 名字,ID,身高和体重。 文本文件中有13行,因此我需要执行13次。 我将编写一个循环以使其工作(并在将数组解析为的函数中。)我知道如何使用基本数组,但是我们应该为此使用结构。 我环顾四周,尝试找出执行该操作的方法,但是对我而言,没有任何真正的工作。 这是我到目前为止的代码。
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct person
{
string firstname;
int id;
double height;
double weight;
};
int main()
{
person array[13];
person *ptr;
ptr = &array[0];
ifstream inData;
inData.open("peeps.txt");
while(!inData.eof())
{
for(ptr = &array[0]; ptr < &array[13];ptr++)
{
inData >> person[ptr].firstname >> person[ptr].id
>> person[ptr].height >> person[ptr].weight;
}
}
}
您的操作方式相当混乱,但这几乎是正确的。 在for
循环内,您尝试索引person
,这是一个类。 那没有多大意义。 相反,您拥有ptr
,它在每次迭代时都指向数组中的每个person
对象,因此您可以取消引用它并将其分配给它的成员:
inData >> ptr->firstname >> ptr->id
>> ptr->height >> ptr->weight;
但是,更糟糕的是,执行array[13]
时, for
循环中的行为不确定。 索引13处没有元素,因此您不能尝试像这样访问它。 您可以将条件更改为ptr <= &array[12]
,但这仍然很混乱。
不过要明确一点,您绝对没有如您所说的指针数组。 相反,您有一个person
数组。
ptr = &array[0];
这将获取数组中第一person
的地址并将其分配给指针。 您可以通过利用数组到指针的转换来更轻松地完成此操作:
ptr = array;
另外,将eof()
用作您的while
标准通常不是一个好主意。 它不能很好地表明下一组读取是否将成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.