为什么我无法将浮动值和整数值写入二进制文件c++?[已关闭]

问题描述 投票:0回答:1

这是代码片段,其中 "s "是一个类对象的数组。

for(int i =0; i<4; i++) 
    {
        cout<<"Student "<<i+1<<": "<<endl; 
        cout<<"Enter regno: "; 
        cin>>regno; 
        cout<<"Enter name: "; 
        cin>>name; 
        cout<<"Enter cgpa: "; 
        cin>>cgpa; 

        s[i].setregno(regno); 
        s[i].setname(name); 
        s[i].setcgpa(cgpa); 

        size[i] = s[i].getname().size(); 

        fout.write( (const char*) s[i].getregno(), sizeof(int)); 
        fout.write((const char* ) s[i].getcgpa(), sizeof(float));
        fout.write(reinterpret_cast<char *>(&size[i]), sizeof(int));
        fout.write(s[i].getname().c_str(), size[i]);

    }

在编译时,我得到以下错误信息。invalid cast from type 'float' to type 'const char*'.

如果我在write里面的类型转换后加入&,我得到了这个错误。lvalue需要作为单利的'&'操作数。

c++ file-handling
1个回答
1
投票

你很接近了。

保存返回值 s[i].getregno() 到一个变量。

int regno = s[i].getregno();

然后,把这个变量传给 write:

fout.write((const char *)&regno, sizeof regno); 

做同样的事情 .getcgpa().

© www.soinside.com 2019 - 2024. All rights reserved.