簡體   English   中英

如何將文本文件讀入指針數組? (C ++)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM