C++ c++;将结构推送到向量上然后保存到输出文件的问题

C++ c++;将结构推送到向量上然后保存到输出文件的问题,c++,struct,ofstream,static-cast,C++,Struct,Ofstream,Static Cast,我放弃了向量的概念,经过一段相当长的摸索之后,我成功地将结构放入和取出了一个文件。我真的很喜欢C++的挑战,太多了!!!p> #include <iostream> #include <fstream> #include <vector> using namespace std; struct Account_query { public: char name[50]; char number[50]; }; void AddRecord(

我放弃了向量的概念,经过一段相当长的摸索之后,我成功地将结构放入和取出了一个文件。我真的很喜欢C++的挑战,太多了!!!p>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

struct Account_query
{
public:
    char name[50];
    char number[50];
};

void AddRecord(Account_query* aq)
{
    ofstream fout;
    fout.open("Records.out", ios::app | ios::out | ios::binary);
    cout << "Enter name: ";
    cin >> aq->name;
    cout << "Enter account number: ";
    cin >> aq->number;
    fout.write( reinterpret_cast<const char *>( &(*aq) ), sizeof(Account_query) );
    fout.close();
}
void ShowRecord()
{
    Account_query aq;
    //std::memset(&aq, 0, sizeof(aq));
    ifstream inf;
    inf.open("Records.out", ios::binary);
    if(!inf)
    {
        cout << "Problem opening"<<endl;
    }
    cout <<"####Data Out###"<<endl;
    while(!inf.eof())
    {
        inf.read( reinterpret_cast<char *>(&aq.name), sizeof(Account_query::name));
        inf.read( reinterpret_cast<char *>(&aq.number), sizeof(Account_query::number));
        cout << "Name is: " << aq.name << "Account is: " << aq.number <<endl;
    }
}

int main(int argc, const char * argv[]) {
    
    vector<Account_query> list;
    
    cout << "Welcome to Jizz Bank\n";
    cout << "Enter one of the following options then press enter\n";
    cout << "-----------------------------------\n";
    cout << "1) Add Record \n";
    cout << "2) Show Records \n";
    cout << "3) Search Record \n";
    cout << "4) Edit Record \n";
    cout << "5) Delete Record \n";
    cout << "-----------------------------------\n";
    cout << "Enter your choice: ";
    
    int x;
    cin >>x;
    
    Account_query a;
    Account_query *p = &a;
    
    switch(x)
    {
        case 1:{
            
            AddRecord(p);//got the data for object now
            break;
        }
        case 2:{
            ShowRecord();
            break;
        }
        default:{
            exit(0);
        }
    }
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
结构帐户查询
{
公众:
字符名[50];
字符数[50];
};
作废添加记录(账户查询*aq)
{
流式流量计;
fout.open(“Records.out”,ios::app | ios::out | ios::binary);
cout>aq->name;
cout>aq->number;
fout.write(重新解释转换(&(*aq)),sizeof(账户查询));
fout.close();
}
void ShowRecord()
{
账户查询aq;
//std::memset(&aq,0,sizeof(aq));
ifstream-inf;
inf.open(“Records.out”,ios::binary);
如果(!inf)
{

不要让自己的生活变得困难。首先使用
std::string
,然后使用
操作符将字符串放入文件中(并从中读取)。例如。/p
pre class=“lang cpp prettyprint override”代码#包含字符串
#包括iostream
#包括fstream
结构AccountQuery
{
std::字符串名;
std::字符串编号;
};
AccountQuery AddRecord()
{
AccountQuery-aq;
标准::cout<“输入名称:”;
标准::cin aq.name;
std::cout<“输入账号:”;
标准:cin>aq.number;
{
std::of stream fout(“Records.out”,std::ios::app | std::ios::binary);

在将原始数据写入文件时,
write
函数需要指向要写入数据的第一个字节的指针。
*它
是一个
帐户查询对象,而不是指针。关于指针,以及如何获取指向对象的指针,您读过哪些内容?
vector::iterator
我想您使用的是一本非常古老的书或教程你的来源是什么?还有另一个问题,它也与指针有关…这个问题可以通过不使用指针来解决。
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

struct Account_query
{
public:
    char name[50];
    char number[50];
};

void AddRecord(Account_query* aq, vector<Account_query>& list)
{
    ofstream fout;
    fout.open("Records.bank", ios::binary | ios::out);
    cout << "Enter name: ";
    cin >> aq->name;
    cout << "Enter account number: ";
    cin >> aq->number;
    list.push_back(*aq);
    
    for (vector<Account_query>::iterator it=list.begin(); it != list.end(); ++it)
    {
        fout.write(static_cast<char*> (*it), sizeof(Account_query));
    }
    fout.close();
}
void ShowRecord()
{
   //TODO
   
}

int main(int argc, const char * argv[]) {
    
    vector<Account_query> list;
    
    cout << "Welcome to Jizz Bank\n";
    cout << "Enter one of the following options then press enter\n";
    cout << "-----------------------------------\n";
    cout << "1) Add Record \n";
    cout << "2) Show Records \n";
    cout << "3) Search Record \n";
    cout << "4) Edit Record \n";
    cout << "5) Delete Record \n";
    cout << "-----------------------------------\n";
    cout << "Enter your choice: ";
    
    int x;
    cin >>x;
    
    switch(x)
    {
        case 1:{
            Account_query* a = new Account_query;
            AddRecord(a, list);//got the data for object now
            break;
        }
        case 2:{
            cout<<"do nowt yet"<<endl;
            break;
        }
        default:{
            exit(0);
        }
    }
    return 0;
}