2015-08-07 1 views
-1

Я пытаюсь загрузить несколько записей из текстового файла в динамический массив.Загрузка записей в динамический массив

Записи разделяются запятыми

например: потерянная, кошка, женщина, персидская, 0 3, черный

Это то, что я до сих пор:

struct Pet{ 

     char status[6]; 
     char petType[4]; 
     ... 
} 

void loadRecords(char * filename, Pet * petPointer, int count){ 

     ifstream fin; 
     Pet* petPointer = new Pet[count]; 

     fin.open(filename); 

     for (int i = 0; i < count; i++) 
     { 
      while (fin.good()) 
      { 
       getline(fin, petPointer->status[i], ','); 
       ... 
      } 
     } 
} 

Это возвращается ошибка "нет экземпляра перегруженной функции" getline "соответствует списку аргументов"

Каким будет лучший способ загрузить эти записи в массив?

+0

Используйте '#include ' и префикс с 'std ::'. –

ответ

0

Вы используете свою строку как массив, а ваш массив - как указатель. Это верно, потому что строки являются массивами, а массивы - указателями, но это не то, что вы хотите. Вы должны делать это:

getline(fin, petPointer[i].status, ','); 

Это littlebit запутанным назвать ваш массив указатель (petPoitner). Это указатель, поскольку это массив, но вы намерены использовать его как массив.

Если вы хотите использовать указатель в прохладном c способ делать вещи, вы можете сделать:

Pet* pets = new Pet[count]; 
Pet* iter = pets; 

while(...){ 
    getline(fin, iter->status); 
    iter++; 
} 

Так или иначе, в обоих направлениях вы, вероятно, все еще должны проверить для вставки больше, чем резервируют память для ,