簡體   English   中英

如何使用指針發送結構體數組

[英]how to send array of struct with pointer

struct user{
char name[25];
int level;
double grade;
char password[10];}

我想用此功能寫入文件。 但是它適用於一種類型的結構,我想保存我的頂級結構的數組

void writeusertofile(user u){
fstream of("user.dat",ios::out|ios::app|ios::binary);
if(of.is_open()){
    of.write((char*)&u.level,sizeof(int));
    of.write((char*)&u.grade,sizeof(double));
    of.write((char*)&u.name,25*sizeof(char));
    of.write((char*)&u.password,10*sizeof(char));
}

我建議您將user結構存儲在std::vector並定義另一個這樣的函數(只是幾個替代方法的一個示例):

void write_all_users_to_file(const std::vector<user>& v)
{
    //open file, check it's OK
    //write the number of user records you're saving, using v.size()
    for(auto& u : v)
    {
        //do your of.writes
    }
}

這將遍歷整個用戶向量,並保存其中的每個用戶。 但是,請不要忽略上面deviantfan的評論-在將數據保存到文件中時,您很容易遇到麻煩,特別是因為您想將這些內容讀回來。

void writeusertofile(user u[],size_t s){
    fstream of("user.dat",ios::out|ios::app|ios::binary);
    for(int i=0;i<s;++i){
        of.write(reinterpret_cast<const char*>(&u[i]),sizeof(user));
    }
}
int main(){
    user u[3]={
        {"theName",3,55.3,"pwd"},
        {"theName2",2,74.2,"pwd2"},
        {"theName3",7,24.6,"pwd3"}
    };
    writeusertofile(u,3);

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM