2012-06-14 49 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