写入二进制文件不起作用

探戈舞

下面的代码可以编译并成功运行,但是在退出时没有任何写入文件。创建文件后,选择注册时询问所有详细信息并显示消息注册成功。文件为customers.data空(文件大小为0kb)。该函数write不会将对象写入文件。代码中的所有内容似乎都是正确的。无法识别错误。请帮忙

主程序:

int main()
{
    int ch;
    Customer cust;
    fstream file;
    file.open("customers.data",ios::out|ios::app|ios::binary);
    if(!file)
    {
        cout<<"\nError Files are missing. Unable to create files\n";
        system("pause");
        exit(1);
    }
    cout << "WELCOME! Press any key to continue.\n\n";
    system("pause");
    do
    {
        system("cls");
        cout<<"\n\n\n";
        cout<<"1->Login"<<endl;
        cout<<"2->Register"<<endl;
        cout<<"3->Exit"<<endl;
        cout<<"Choose An option: ";
        cin>>ch;
        switch(ch)
        {
        case 1:
            if(cust.Login()==true)
            {
                LaunchCustomerMenu();
            }
            else
            {
                cout<<"Incorrect Email/Password\n";
                system("pause");
            }

            break;
       case 2:
        cust.Register();
        file.write((char*)&cust, sizeof(cust)); //does not work
        if(!file.fail()) //still true
        {
            cout<<"\n\nRegistration Successful"<<endl;
            system("pause");
        }
         else
            {
                cout<<"\nTheir was a Error processing your Registration\n";
                system("pause");
            }

            break;
        case 3:
            exit(0);
            break;
        default:
            cout<<"\n\nWRONG OPTION\n";
            cout<<"Choose Again\n\n";
            system("pause");
        }
        cin.ignore();
    }
    while(ch!=3);
    file.close();
    return 0;
}

班级:

class Customer
{
private:
    unsigned int CustomerID;
    string CustomerName;
    string CustomerAddress;
    string CustomerEmail;
    string CustomerPassword;
    unsigned int CustomerPhone;
public:
    Customer();

    void Register();
    bool Login();

    unsigned int getID();
    string getName();
    string getEmail();
    string readPassword();
    unsigned int getPhone();
    unsigned int RandomID();

    void modifyName();
    void modifyAddress();
    void modifyEmail();
    void modifyPassword();
    void modifyPhone();
};

CustomerID 是随机生成的。

功能寄存器:

void Customer::Register()
{
    cout<<"Enter Your Name: ";
    cin.ignore();
    getline(cin,CustomerName);
    cout<<"Enter Your Address: ";
    cin.ignore();
    getline(cin,CustomerAddress);
    cout<<"Enter Your Email: ";
    cin>>CustomerEmail;
    cout<<"Enter A Password: ";
    cin.ignore();
    getline(cin,CustomerPassword);
    cout<<"Enter Your Phone no. :";
    cin>>CustomerPhone;
}

编辑:根据下面的答案,我添加了一个检查,file.fail()但它返回false并且customers.data为空,即write操作无法写入对象。

普什卡

我也发生了同样的事情,我设法找到了错误。

当使用传统char变量类型声明一个数组来保存字符串值时,它可以很好地工作

它们似乎与字符串库的实现有关。即使您通过某种方式能够在读取值时使用字符串数据类型将值写入文件,也会产生运行时错误(SIGSEGV)。我认为该字符串使用指针进行动态变量分配,不适合与文件一起使用。运行程序后,分配的变量空间不再保留在内存中,从而生成SIGSEGV。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制文件读取-写入不起作用

来自分类Dev

二进制模式下的文件写入和追加不起作用

来自分类Dev

二进制搜索不起作用-NON数组。

来自分类Dev

二进制串联不起作用

来自分类Dev

二进制搜索算法不起作用

来自分类Dev

由于索引,二进制搜索不起作用?

来自分类Dev

highcharts-react-native在iOS二进制文件(.ipa)中不起作用

来自分类Dev

写入二进制文件块

来自分类Dev

写入二进制文件

来自分类Dev

写入二进制文件的末尾

来自分类Dev

写入二进制文件块

来自分类Dev

写入二进制文件

来自分类Dev

读取/写入二进制文件

来自分类Dev

写入二进制文件python

来自分类Dev

在C#中计算二进制文件的符号频率不起作用,但适用于等效的C ++代码

来自分类Dev

基本二进制到十进制转换程序不起作用(Python)

来自分类Dev

读取已发布的二进制文件并写入新的二进制文件

来自分类Dev

二进制搜索树,有序方法迭代不起作用

来自分类Dev

为什么我的二进制到英语代码不起作用?

来自分类Dev

为什么二进制搜索在我的测试中不起作用?

来自分类Dev

在Python中绘制二进制预测图不起作用

来自分类Dev

关于“二进制”不起作用的Side Runner论点

来自分类Dev

C-递归在二进制搜索树中不起作用

来自分类Dev

Python-二进制加法,循环不起作用

来自分类Dev

将二进制搜索树转换为双链表-不起作用

来自分类Dev

为什么我的二进制到英语代码不起作用?

来自分类Dev

查找二进制搜索树的祖先方法不起作用

来自分类Dev

在Java中打印字节的二进制形式,“ ==”不起作用?

来自分类Dev

二进制搜索算法随机生成的数组项不起作用

Related 相关文章

热门标签

归档