2017-04-10 106 views
0

我想檢查用戶是否輸入與我的drivers.txt文件中相同的數字。該文件是這樣的:訂了所有的驅動程序C++如何根據.txt文件檢查用戶輸入?

Angela 07483774637 1000 1100 
Mark 07362543432 1100  
Dave 07869878907 1200 1100 

名稱,數量和時間。檢查用戶是否輸入與最後2列相同的時間。如果所有車手都預定了這個時間(即,如果所有車手在他們的名字旁邊都有1100),那麼說出租車在那段時間不可用,如果時間空閒了,那麼說出租車是可用的。

應該知道,只要它找到與用戶相同號碼的一個實例,就不會說出租車在那段時間可用(例如先檢查列1,然後如果它有那個號碼,則不要繼續(即馬克有1100,但下一列是空的,所以程序可能認爲馬克可用於1100))。稍後,我將執行寫入文件功能,以便用戶向文件寫入預訂時間,而不是手動寫入。

userTime2 =用戶輸入

相關的代碼至今:

struct Driver 
{ 
    string firstName; 
    double number; 
    int timeBooked; 
}; 

const int MAXDRIVERS = 3; 
struct Driver cab; 

void searchDrivers() 
    { 
     cout << "\nSearching for drivers..." << endl; 
     ifstream inFile; 
     inFile.open("drivers.txt"); 
     if (!inFile) 
     { 
      cout << "error reading file"; 
     } 
     else 
     { 
      for (int i = 0; i < MAXDRIVERS; i++) 
      { 
       inFile >> cab.firstName[i] >> cab.number[i] >> cab.timeBooked[i]; 
       if (userTime2 == cab.timeBooked[i]) 
       { 
        cout << "unavailable" << endl; 
       } 
       else 
       { 
        cout << "car available" << endl; 
        driverIndex = i; 
        confirmBooking(); 
       } 
      } 
     } 

    } 

什麼我需要添加/更改這使它工作嗎?謝謝。

+0

這是相當廣泛的。原來,這聽起來像你想讓人們爲你完成作業。你有什麼特別的問題? – Carcigenicate

+0

它不會正確讀取文件。在調試時,出於某種原因將'timeBooked'值分配給'firstName'? – lydia4444

+1

[可逐行讀取文件]的可能重複(http://stackoverflow.com/questions/7868936/read-file-line-by-line)。具體答案1選項2. – user4581301

回答

0

它將「timeBooked」值分配給'firstName',因爲您正在使用令牌從文件中讀取,這是當它讀取文件時發生的事情Angela被分配給firstName [0],0748 ...至數字[0],1000到timeBooked [0],最後1100到firstName [1]。我希望這有幫助。

+0

對不起林不知道你的意思 – lydia4444

+0

INFILE >> cab.firstName [I] >> cab.number [I]> > cab.timeBooked [i]; 安吉拉被分配給cab.firstName [0],07483774637至cab.number [0],1000至cab.timeBooked [0],然後我遞增到1,因爲在該行不是一切都被讀cab.firstName [1]是1100.你必須非常小心使用標記讀取文件中的所有內容都必須是正確的。如果您仍然感到困惑,我建議使用Google搜索標記文件讀取。 – Manvir