2017-01-27 7 views
1

Я использую getline, чтобы начать чтение информации из файла. Проблема в том, что он никогда не войдет в цикл while, хотя в файле есть данные для чтения. Кто-нибудь видит, что может быть проблемой? Я знаю, что мой код не может быть лучшим отформатирован, но сейчас я строго обеспокоены время (GetLine())C++ while (getline()) не работает должным образом

void loadPatients(Doctor Doctor[], int size) 
{ 
    std::ifstream patientFile; 
    Patient** patientInfo; 
    std::string Address, DoctorId, Id, Name, PhoneNumber,junk; 
    int patientNumber; 
    patientInfo = new Patient*[size]; 
    for (int b = 0; b < size; b++) 
     patientInfo[b] = new Patient[10]; 

    for (int i = 0; i < size; i++) 
    { 
     DoctorId = Doctor[i].getId(); 
     patientFile.open(DoctorId); 
     patientNumber = Doctor[i].getNumberOfPatient(); 
     for (int a = 0; a < patientNumber; a++) 
     { 
      while (getline(patientFile, Name)) 
      { 
       getline(patientFile, Id); 
       getline(patientFile, Address); 
       getline(patientFile, PhoneNumber); 
       getline(patientFile, DoctorId); 
      } 
      patientInfo[i][a].setAddress(Address); 
      std::cout << Address; 
      patientInfo[i][a].setName(Name); 
      patientInfo[i][a].setDoctorId(DoctorId); 
      patientInfo[i][a].setId(Id); 
      patientInfo[i][a].setPhoneNumber(PhoneNumber); 
     } 
     patientFile.close(); 

    } 
+0

Если он никогда не достигает цикла while, проверьте условия завершения цикла, чтобы проверить размер и количество пациентов. Используйте операторы cout и посмотрите, где они не входят –

+0

I уже сделал это, я должен был бы, вероятно, упомянуть, что он попадает в линию до цикла while, но не вводит его –

+0

Можете ли вы попробовать (patientFile.good()) и переместить getline (patientFile, Name) внутри время и посмотреть, идет ли оно внутри e loop –

ответ

1

patientFile.open (DoctorId) необходимо расширение .txt на него .. так patientFile .open (DoctorId + ". txt")