将时间戳写入文件

时间:2014-01-19 16:04:34

标签: c++ ctime

我正在处理工资申请。应用程序应允许用户从帐户转移金额(该帐户是文本文件“shop”,其中包含值1000)。

用户应该能够在不透支帐户的情况下进行任意数量的转移。每个事务也应该由一个单独的文件中的时间戳记录,这是我正在努力的一点。

目前我正在使用时间戳的代码在文件“time”中正常创建,除了1040ED48出现在时间之前。有人知道为什么吗?此外,每次执行事务时,“time”文件都会被新的时间戳覆盖。有没有办法将每个时间戳放在文件中的不同行上,以阻止它被覆盖?对不起,如果不清楚的话。

#include <limits>
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <ctime>
#include <string>


int  read_balance(void);
void write_balance(int balance);

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{


    cout << "How much do you wish to transfer?" << endl;


    int amount = 0;

if (std::cin >> amount)
{
    std::cout << "Transferred Amount:" << amount << "\n";
    int balance = read_balance();

    if (amount <= 0)
    {
        std::cout << "Amount must be positive\n";
    }
    else if (balance < amount)
    {
        std::cout << "Insufficient funds\n";
    }
    else
    {
        int new_balance = balance - amount;

        write_balance(new_balance);
        std::cout << "New account balance: " << new_balance << std::endl;

    fstream infile;
    infile.open("time.txt");


    std::time_t result = std::time(nullptr);
    std::string timeresult = std::ctime(&result);

    infile << std::cout << timeresult << std::endl;
    }

}


system("pause");
return 0;
}

int read_balance(void)
{
std::ifstream f;
f.exceptions(std::ios::failbit | std::ios::badbit);
f.open("shop.txt");
int balance;
f >> balance;
f.close();
return balance;
}

void write_balance(int balance)
{
std::ofstream f;
f.exceptions(std::ios::failbit | std::ios::badbit);
f.open("shop.txt");
f << balance;
f.close();
}

2 个答案:

答案 0 :(得分:1)

如果您打开要写入的文件,则首先删除该文件。如果您想要删除该文件,则需要打开该文件以进行追加(使用app模式。)

答案 1 :(得分:1)

还有一件事。检查错误条件后,您应该打印以下内容:

std::cout << "Transferred Amount:" << amount << "\n";
int balance = read_balance();

想象一下你在ATM。现在,您尝试提取的金额超过您在帐户中剩余的金额,而ATM显示金钱已转移,表明您没有足够的余额。