2014-10-18 100 views
0

我正在做一個項目,真的可以使用一些援助。我已經將我的變量存儲到文件中,如下所示,但將它們與製表符分開。現在我想將它們作爲單個變量讀出來,所以問題是,如何在沒有選項卡的情況下閱讀它們?我需要解析字符串嗎?閱讀標籤在c + + delimeted文件

void fileManagement::appendCustomeRFile(const Customer &obj) 
{ 
    if(tryFile(CFile)) 
    { 
    ifstream cfile(CFile); 
    cfile<<obj.ReturnCustomerId()<<"\t"<<obj.ReturnFName()<<"\t"<<obj.ReturnLName()<<"\t"<<obj.ReturnContactNumber()<<"\t"<<obj.RetrunBalance()<<"\n\r"; 
    cfile.close; 
    } 
} 

這是我目前如何從文件中讀取的。

void viewCustomerInfo(string contact_N)// 
{ 
tryFile(CFile); 
bool found=false; 
string retreivedId,retreivedFname, retreivedLname, retreivedNumber; 
double retreivedBalance; 
ofstream cfile(CFile); 
if(cfile.is_open()) 
    { 
    while(!cfile.eof()) 
    { 
     cfile>>retreivedId>>retreivedFname>>retreivedLname>>retreivedNumber>>retreivedBalance; 
     if (retreivedNumber==contact_N) 
     { 
      found=true; 
      cout<<"_______________________________________CUSTOMER INFO_______________________________________\n"<<"Customer ID: "<<retreivedId<<"\nFirst Name: "<<retreivedFname<<"\nLast Name: "<<retreivedLname<<"\n"; 
      cout<<"Contact Number: "<<retreivedNumber<<"\nCustomer Balance"<<retreivedBalance<<endl; 
      cout<<"___________________________________________________________________________________________"<<endl; 
      break; 
     } 
    } 
    } 
} 

任何幫助,非常感謝。謝謝。的

+2

我會建議使用tokeniser,無論是自己寫一個或谷歌的一個(例如:升壓包括一個) – UnholySheep 2014-10-18 15:27:15

+0

不要使用'eof'。使用'eof'總是錯誤的。 – molbdnilo 2014-10-18 15:28:44

+1

使用boost項目中的庫,boost tokenizer,http://boost.2283326.n4.nabble.com/tokenizing-a-string-td2564907.html – user2485710 2014-10-18 15:33:42

回答

1

,而不是做

while(!cfile.eof()) 

試試這個

while(cfile>>retreivedId>>retreivedFname>>retreivedLname>>retreivedNumber>>retreivedBalance)