2013-05-25 24 views
0

我有一個程序應該能夠讀取的銀行帳戶文件。此功能現在可以使用ifstream。但我希望程序讀取文本文件的第6行(其值爲'balance'),然後根據需要進行更新(刪除並用新值替換)。C++從文本文件中找到一行並更新/寫入該行

我用一個for循環找遍遍。但是如何在需要時更新它(提款和資金存款更新餘額)

這是代碼我現在:

ifstream file; 
string line; 
file.open ("accounts.txt", ios::in); 

for(int i = 0; i < 6; ++i) //6 being the 6th line 
     { 
     getline(file, line); 
     } 

下一步是什麼人? 謝謝:)

+0

你的文件將有多大? – itsols

+0

這是一個很小的文本文件,約有10行 –

回答

2

如果您的文件非常小,就像您提到的那樣,您可以將它帶入一個字符串數組(每行文本一個元素)。然後對陣列進行更改並將整個陣列重新寫入文件。

例如,你可以將它讀入一個這樣的arrya:

//assuming you've defined the array A 
for(int i = 0; i < 6; i++) //NOTE: I've changed the loop counter i 
     { 
     getline(file, line); 
     A[i] = line; 
     cout << A[i] < "\n"; //This is the NEW LINE I wanted you to put 
     //If the ABOVE line gives nothing, you ought to check your TXT file. 
     } 
//Change line 6 
A[5] = "555.00"; 
//Now reopen the file to write 
ofstream Account ("accounts.txt"); 
if (Account.is_open()) 
    { 
    for(i=0;i<6;i++) 
     {//NOTE THAT I HAVE INCLUDED BRACES HERE in case you're missing something. 
     Account << A[i] << "\n"; //Loop through the array and write to file 
     } 
    Account.close(); 
    } 

我沒有測試這一點,但我認爲這是好的。 更多代碼:如果您在主代碼的末尾添加了以下代碼,您應該可以看到數組中的內容。如果這顯示沒有任何明確表示您的文件是空的。

for(int i = 0; i < 6; i++) 
    { 
    cout << A[i] < " This is a row with data\n"; 
    } 

注:雖然我想幫助你在這個論壇上澄清的問題,我認爲這個問題是超越這個論壇的性質。也許你需要的是花一些時間學習循環和其他結構的藝術:)

+0

問題:它刪除A [1]中的每個值直到6,只寫入6的值。其他爲空 –

+0

這是一個好概念,只要它保留現有值的A [1],其餘的沒有擦除? –

+0

@PJ_Boy在你的代碼中可能是一個錯誤。你能告訴我第二個循環中的代碼嗎? (int i = 0; i <6; ++ i)// 6爲第6行 getline(file,line);將其粘貼到此註釋空間 – itsols

相關問題