我正在尝试创建一个程序,这样我就可以跟踪我的资金和我欠钱的人,或者计划花钱的人等等。
然而,我不确定如何让计算机记录我从"cin“输入的内容。
注意:我在下面的程序中没有使用cin,但我假设它是相同的。
目前,我设置了账户余额,然后将其记入贷方,但信息并未存储。我希望下一次使用该程序时,余额将是最后一次输入的最终余额。
请参考我的代码:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//Class creation
class account
{
public:
account(float a)
{
bal = a;
std::cout<<"Account made"<<endl;
}
void debit(float debit);
void credit(float credit);
void printbal(){cout<<"Your Balance is "<<bal<<endl;}
private:
float bal;
};
//Constructor
void account::debit(float x)
{
bal = bal + x;
cout<<"Debiting balance"<<endl;
}
//credit function
void account::credit( float x)
{
bal = bal - x;
cout<<"Crediting balance"<<endl;
}
int main()
{
account bank(12);
bank.account::printbal();
bank.account::credit(20);
bank.account::printbal();
return 0;
}当我编译时,我得到:
$./a.out
Account made
Your Balance is 12
Crediting balance
Your Balance is -8 并在再次完成时得到完全相同的结果。我希望第二次它会说:
Account made
Your Balance is -8
Crediting balance
Your Balance is -28 谢谢。
发布于 2017-05-30 15:52:52
变量不是持久化的,你必须将你的信息存储在永久存储器中。
你可以做的是,在每次你的程序结束时,将余额存储在一个文件或数据库中。在下一次运行中,您必须做的第一件事是从文件或DB中检索结果并对其执行操作。
发布于 2017-05-30 17:37:57
问题是您没有使用永久内存来存储帐户数据。
每次执行该程序时,都会发生相同的事情:
操作系统为您的程序反转一些内存,并执行main函数。它在保留内存中的某处创建一个余额为12的帐户变量。然后,将balance变量减少20,然后程序结束。
当程序结束时,操作系统取回先前保留的内存。这意味着你的变量和它的内容永远丢失了。
当您再次运行您的应用程序时,同样的事情也会发生,操作系统可能会为您的可执行文件分配不同的内存部分(不可能在第一次执行时存储bank变量的位置写入)。
底线是:如果你想让你的数据在不同的执行中存活下来,你必须在磁盘或者其他的持久性内存(文件、数据库、云等)上进行存储!
https://stackoverflow.com/questions/44256505
复制相似问题