[英]writing files with fstream doesnt work in c++
在向文件写入内容之前,我想进行一些检查。 当我进行这些检查时,写作不起作用。 这可能是什么原因?
检查过程是这样工作的。 文件中是用户输入的数据吗? 如果有更简单的方法来检查这个,我也可以试试。
工作代码:
void add_dealer(){
file.open("center.txt", ios::out|ios::app);
c.new_Dealer();
file.write((char*)&c,sizeof(Center));
file.close();
cout << "The dealer has been saved.";
}
检查后:
fstream file;
bool check_dealer_name(string name){
bool result = false;
file.open("center.txt", ios::in);
while(file.read((char*)&c,sizeof(Center))){
if(c.getLocation()== name){
result = true;
}
}
return result;
}
bool check_dealer_id(int id){
bool result = false;
while(file.read((char*)&c,sizeof(Center))){
if(c.getID() == id){
result = true;
}
}
return result;
}
void add_dealer(){
c.new_Dealer();
file.open("center.txt", ios::out|ios::app);
if (!check_dealer_id(c.getID()) || !check_dealer_name(c.getLocation())){
file.write((char*)&c,sizeof(Center));
file.close();
cout << "The dealer has been saved.";
}
else{
cout << "This Dealer name or dealer id already exists" << endl;
}
file.close();
}
Class:
class Center{
int ID;
char location[50];
public:
void new_Dealer(){
cout << "Enter the Dealer ID: " ;
cin >> ID;
cout << endl << "Enter the Dealer location: ";
cin >> location;
}
问题是您在检查后无法关闭文件。 您无法使用已打开文件的变量打开文件。
之所以会出现此错误,是因为您将相同的file
变量用于不同的目的。 我强烈建议您在需要使用它的每个方法中单独声明文件变量。 这样fstream
析构函数将自动关闭 function 末尾的文件,并且您犯的错误是不可能的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.