이 질문에 이전에 here과 비슷한 질문을 던졌습니다. 다른 사용자의 의견에 따라파일에서 C++의 구조체 내의 구조체 배열을 읽음
SO, 내 질문 재 프레임 한 : 첫 번째 게시물에서
을, 나는 inData의 < <를 사용하여 struct.By와 배열로 파일에서 그쪽으로 데이터를 읽으려고했다 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], I는 갱신 된 값을 가진 구조체 PersonId을 참조한다.
내 질문에 대한 답변을 지금 보시겠습니까?
1. 코드를 세 번째로 게시하고 질문이 표시되지 않습니다. 2. C++로 작성하는 경우 malloc을 사용하지 마십시오 (new 연산자를 재정의하거나 simillar를 수행하지 않는 한). p = new Persondata [n]이라고 써야합니다. 그리고 마지막에 삭제 [] p; 3. PersonId에 대한 연산자 >> 구현을 볼 수 없습니다 –