[英]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.