我在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
如何在创建第一个客户后将其移至新行?
答案 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::app
与std::ofstream::app
功能相同,只是更短!
不要指望它编译,因为我没有声明你的帐户信息变量(Account_no
等等)。在你宣布它们之前,它不会编译......