2012-06-14 81 views
3

我想知道是否有方法在閱讀文本文件時更改文本文件的特定行。我正在創建一個ATM程序,並且我想在退出或存款時更改個人帳戶中的金額。我有一個用戶名,密碼和餘額的文本文件,但我只想改變餘額。我會怎麼做呢?更改文本文件中的值C++

+7

閱讀整個文件,更改所需的行,再次寫入文件。 – Cristy

回答

4

由於這是作業,我會給你一個關於你應該在這裏做什麼的廣泛概述。

您可以讀取文件,查找餘額,更改它,然後將文件寫回。

讀取文件可以使用ifstream完成,您可能要使用的函數是getline

然後,您可以使用ofstream將其寫回。

+1

最好使用[std :: getline](http://en.cppreference.com/w/cpp/string/basic_string/getline)和std :: string而不是成員函數。 –

+0

謝謝。我重新寫了它。但現在它無限地在文本文件中不斷重複。 –

3

僅當已更改的文本與原始文件的字節對字節長度相同時,才能在文本文件中更改文本行。當無法保證這一點時(當然這聽起來就像是你的任務中的情況)當文件很小時,一種常見的工作方式就是創建臨時文件,將新內容寫入其中,然後交換文件,並刪除原件。此方法的一個優點是,如果寫入操作在中間停止,則文件不會損壞:臨時文件損壞,而原始文件保持不變。

+1

通常它是「寫入臨時」,「交換文件」,然後是「刪除」,這樣,在所有點上,都有一個正確名稱的有效文件。你的方式,如果你刪除權力,但移動失敗,那麼沒有正確名稱的文件。 –

+2

只是一個警告:這可能是棘手的,以得到正確的;只有當你認爲你的老師會欣賞你的作業非凡的健壯性時,才試着實現這一點 – anatolyg