2013-09-15 3 views
0
void Admin::searchFlight(string destination) 
{ 
    Flight sFlight; 
    string read; 
    ifstream inFlight("Flight.txt"); 
    while(getline(inFlight, read)) 
    { 
     flightList.push_back(sFlight); 
    } 
    int counter = 0; 
    for(int i = 0; i < flightList.size(); i++) 
    { 
     if(destination.compare(flightList[i].getDestination())) 
     { 
      //counter++; 
      flightList[i].displayFlightSchedule(); 
     } 
    } 
} 

В текстовом файле есть некоторые данные, как читать текстовый файл внутри вектора? Это мой перегружать конструктор Flight():Чтение из текстового файла в вектор объекта

Flight flightSchedule(flightID,departure,destination,price,dateOfFlight,timeOfFlight); 

и вот мой вектор декларации:

vector<Flight> flightList; 
+0

Вы можете переопределить 'оператор >>()' – sshilovsky

+2

Определить 'istream' экстрактор для' Flight' и разобрать каждую строку через ' std :: istringstream'открывает строку, только что прочитанную в вашем основном цикле. Предположим, что это формат с одним полетом в формате файла. – WhozCraig

+0

Btw, я не вижу здесь никакого вопроса. Вам нужно разобрать строку в свой объект? – sshilovsky

ответ

0

В соответствии с вашими требованиями, предполагается, что ваш контент Flight.txt является:

Индия 22

США 23

Chi на 24

#include<iostream> 
#include<vector> 
#include<fstream> 
#include<sstream> 

using namespace std; 

void searchFlight(string); 

class Flight 
{ 
    public: 
    string destination; 
    int tm; 

    Flight(string d, int t):destination(d), tm(t) 
    { 
    } 

    string getDestination() 
    { 
    return destination; 
    } 

    int displayFlightSchedule() 
    { 
    return tm; 
    } 

}; 


int main() 
{ 
    searchFlight("India"); 
    return 0; 
} 

void searchFlight(string destin) 
{ 
    vector<Flight> flightlist; 

    string line; 
    int tm; 
    string dest; 

    ifstream ifs("Flight.txt"); 

    while(getline(ifs, line)) 
    { 
    istringstream is(line); 
    is>>dest>>tm; 

    flightlist.push_back(Flight(dest, tm)); 

    } 

    for(unsigned i = 0; i<flightlist.size(); i++) 
    { 
    if (destin == (flightlist[i].getDestination())) 
    { 
     cout<<flightlist[i].displayFlightSchedule()<<endl; 
    } 
    } 
} 

ВЫВОД:

Смежные вопросы