【发布时间】:2015-01-21 07:50:22
【问题描述】:
我需要有关如何编写代码以在 linux 中使用 c++ 执行删除行的帮助。下面列出了我在文本文件中的内容
描述:金额:日期
电费:100:25jan2015
电话费:100:25jan2015
电话费:50:25jan2015
我想这样做,以便当用户选择选项 b 以删除用户输入的费用并防止程序删除重复数据时,用户必须输入金额和日期。谢谢。
而 temp.txt 用于存储在重命名为 Expense.txt 之前未删除的内容,因此如果电话帐单值 100 被删除,它将变为
电费:100:25jan2015
电话费:50:25jan2015
void deleteexpensesdata(string& expense, string& texpense, double& amount, string& date){
int check, x=0;
ifstream Expenses("Expense.txt");
ofstream temp("temp.txt");
cout << "\n";
cout << "Enter Type of Expense you wish to remove" << endl;
cin >> texpense;
while(Expenses >> expense >> amount >> date){
if(texpense!=expense){//if there are expenses with different name, input their data into temp file
temp << expense << ":" << amount << ":" << date <<endl;
}
if(texpense==expense){// if user entered correct name, x=1 for later output message that the user data has been deleted
x=1;
}
}
Expenses.clear();
Expenses.seekg(0, ios::beg);
Expenses.close();
temp.close();
remove("Expense.txt");
rename("temp.txt","Expense.txt");
if(x==0){//x was set to 0 at start, so if it didn't change, it means there is error
cout << "Remove of Expense failed" << endl;
}
else{//if x is not = 0 then remove is successful
cout << "Expenses has been removed" << endl;
}
}
调用函数的代码如下
cout << "Remove Expense.\n";
deleteexpensesdata(expense, texpense, amount, date);
cout << "Expense Date has been delete. \n" << endl;
cin.ignore();
cin.get();
【问题讨论】:
-
你忘了说你当前的代码在做什么 - 即你在
temp.txt得到什么输出。
标签: c++