私は以前にこの質問をしましたhereと同様の質問が閉じられました。 SO、他のユーザーからのコメントをもとに、私は私の質問再フレーミングしているファイルからC++の構造体内の構造体の配列を読み取る
:最初の記事で
を、私はINDATA < <を使用してstruct.Byの配列にファイルからTHAデータを読み取るしようとしていましたp [i]であり、>> p.fIdであれば、データファイルからPersonIdに値を読み取ることができました。
は今、私はこれを試してみたい:
struct PersonId
{
int fId;
};
struct PersonData
{
public:
typedef PersonData* Ptr;
PersonData();
PersonId fId;
istream& read(std::istream&);
};
istream& PersonData::read(std::istream& is)
{
is >> fId;
return is;
}
istream& operator >> (istream& is, PersonData &p)
{
// is >> p.fId;
return p.read(is);
}
int main()
{
ifstream indata; // indata is like cin
int i;
indata.open("persons.txt", ios::in); // opens the file
if(!indata)
{ // file couldn't be opened
cout << "Error: file could not be opened" << endl;
exit(1);
}
int n = 5;
PersonData* p;
p = (PersonData*) malloc (n * sizeof(PersonData));
while (!indata.eof())
{
indata >> p[i];
i++;
}
for(i = 0; i < n; ++i)
{
cout << "PersonData [" << i << "] is " << p[i] << endl;
}
return 0;
}
私は実際にPersonDataによって定義された構造体に値を読み取るために、「読み」メンバ関数を使用します。 私の質問:PersonData構造体に格納されてPERSONID構造体の中にファイルからデータを読み取る方法
を??
PersonData [i]を読み込んでいるときに、更新された値を持つ構造化PersonIDがあるはずです。
私の質問は今や明確ですか?
1.コードを3回目に投稿しても、何の質問も表示されません。 2. C++で記述している場合は、mallocを使用しないでください(new演算子をオーバーライドしたり、simillarを実行しない限り)。あなたはp = new Persondata [n]と書くべきです。そして最後に delete [] p; 3. PersonIdのオペレータ>>の実装が見当たらない –