繁体   English   中英

使用 fstream 写入文件在 c++ 中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM