C++ 为什么我无法将浮点值和整数值写入二进制文件c++;?

C++ 为什么我无法将浮点值和整数值写入二进制文件c++;?,c++,file-handling,C++,File Handling,这是代码片段,其中“s”是类对象的数组 for(int i =0; i<4; i++) { cout<<"Student "<<i+1<<": "<<endl; cout<<"Enter regno: "; cin>>regno; cout<<"Enter name: "; cin>>name;

这是代码片段,其中“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]);

    }
for(inti=0;i你很接近

s[i].getregno()的返回值保存到变量中:

int regno = s[i].getregno();
然后,将该变量传递给
write

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

.getcgpa()执行相同的操作代码> < /p>你不能通过猜测语法来学习C++。语言太复杂了以至于不能工作。你需要阅读、上课、练习几年。这是一种极其困难的语言;你不能仅仅通过猜测东西来正确地学习它。你必须学习和了解细节。我想。它总是感觉。在文件处理开始后,C++中的混乱。与Python XooOS<代码>写/代码>函数相比,方法更复杂,它期望指针作为第一个参数。
返回指针。我从这里看不见。这有什么不同吗?对不起,我来自Python背景。我想我们可以只对函数返回的数据进行操作,这与将其存储在另一个函数中没有什么区别variable@ChaoSAdm在C++中,表达式被分为类别(所谓的值类别)。:rvalue(通常指临时对象)和lvalue(其他所有内容)。从函数返回的数字是rvalue,变量是lvalue。作为安全措施,您不能获取rvalue的地址(因为这是一种简单的方法,可以获取地址,然后在它指向的对象被销毁后使用它;在您的情况下,不会发生这种情况,但无论如何安全机制都会阻挡它)。这是有用的信息!我试过了。错误消失了。但是,浮点值和整数值并没有像预期的那样写入文件中。该文件是用一些垃圾值写入的,而浮点值和整数值应该是垃圾值。@ChaoSAdm您是如何确定这些值是垃圾值的?您正在将它们写入文件中二进制,因此常规文本编辑器会将它们显示为垃圾。