用C ++覆盖文本文件

时间:2014-05-05 08:24:17

标签: c++ file

我在C++创建了一个银行业务程序,每次用户创建帐户时,他们的详细信息都会存储到文本文件中。我已经创建了执行此操作的代码,但是当我创建第一个帐户时,它将存储信息,当我创建第二个帐户时,它会覆盖它,这不是我想要做的。

以下是我正在使用的代码:

ofstream myfile; 
myfile.open("test.txt"); //open myfile.txt
myfile << setw(10) << "=Account Number=" << setw(20) << "=Customer Name=" << setw(20) << "=Balance=" << endl;
myfile << "=========================================================================================";
myfile << setw(10) << Account_no << setw(20) << name << setw(20) << address << setw(20) << intialAmount; //send values
myfile.close();//close file

如何在创建第一个客户后将其移至新行?

2 个答案:

答案 0 :(得分:2)

ofstream的构造函数采用模式选项(see here)。 所以打开就像:

ofstream myfile("test.txt",std::ofstream::app);

答案 1 :(得分:0)

为了建立Kiroxas的代码,首先要检查是否已有客户:

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int main()
{
    ifstream fil("test.txt");

    string f((istreambuf_iterator<char>(fil)), istreambuf_iterator<char>()); 
    //read into string

    fil.close();

    if (f.length() < 1) // if no previous customer in file
    {

    ofstream myfile;

    myfile.open("test.txt");

    myfile << setw(10) << "=Account Number=" << setw(20) << "=Customer Name=" 
    << setw(20) << "=Balance=" << endl; 

    myfile << "============================================" 
           << "============================================="; 

    myfile << setw(10) << Account_no << setw(20) 
           << name << setw(20) << address 
           << setw(20) << intialAmount; //send values to start of file

    myfile.close(); //close file

    }

    else //if file contains previous customer
    {
        ofstream myfile;

        myfile.open("test.txt", ios::app); 
        //ios::app tells it to write to the end of the file

        myfile << setw(10) << "=Account Number=" << setw(20) 
               << "=Customer Name=" 
               << setw(20) << "=Balance=" 
               << endl;

        myfile << setw(10) << Account_no << setw(20) 
               << name << setw(20) << address 
               << setw(20) << intialAmount; //send values 
    }
}

注意:

ios::appstd::ofstream::app功能相同,只是更短!

两个

不要指望它编译,因为我没有声明你的帐户信息变量(Account_no等等)。在你宣布它们之前,它不会编译......