Я задал этот вопрос ранее here и аналогичный вопрос был закрыт.прочитайте из файла в массив структур внутри структур в C++
SO на основе комментария от другого пользователя, я стану ассоциироваться моим вопросом:
В первом посте я пытался читать тх данные из файла в массив с помощью 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. Мой вопрос:
Как читать данные из файла в PersonId структуры, которая хранится в структуры PersonData ??
При чтении PersonData [i], я должен увидеть, что у него есть структура PersonId с обновленным значением.
Надеюсь, теперь мои вопросы понятны?
1. Вы публикуете свой код в третий раз, и я до сих пор не вижу никаких вопросов. 2. Если вы пишете на C++, не используйте malloc (если вы не переопределяете оператор new или не делаете что-то simillar). Вы должны написать p = new Persondata [n]; И в конце delete [] p; 3. Я не вижу никакой реализации оператора >> для PersonId –