Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;结构二进制文件 大家好,我是C++编程新手 我已将结构保存在二进制文件中。。 但当尝试读取它时,应用程序正在崩溃 这是我的密码 struct Person { string name; int age; }; void main() { Person p; ifstream is("person.data",ios::binary); is.read((char*)&p,sizeof(p)); }_C++ - Fatal编程技术网

C++;结构二进制文件 大家好,我是C++编程新手 我已将结构保存在二进制文件中。。 但当尝试读取它时,应用程序正在崩溃 这是我的密码 struct Person { string name; int age; }; void main() { Person p; ifstream is("person.data",ios::binary); is.read((char*)&p,sizeof(p)); }

C++;结构二进制文件 大家好,我是C++编程新手 我已将结构保存在二进制文件中。。 但当尝试读取它时,应用程序正在崩溃 这是我的密码 struct Person { string name; int age; }; void main() { Person p; ifstream is("person.data",ios::binary); is.read((char*)&p,sizeof(p)); },c++,C++,您正在使用sizeof(p) 字符串类的长度可变。这意味着它本质上是一个结构,其中包含指向堆中其他一些字符的指针。试图通过结构读取字符串将不起作用。您必须将所有字符放在结构本身中,否则它只会读入一个指向堆中某个位置的指针(现在已失效),并可能导致分段错误 试试这个: struct Person { char name[40]; int age; }; void main() { Person p; ifstream is("person.data",ios::b

您正在使用
sizeof(p)

字符串
类的长度可变。这意味着它本质上是一个结构,其中包含指向堆中其他一些字符的指针。试图通过结构读取字符串将不起作用。您必须将所有字符放在结构本身中,否则它只会读入一个指向堆中某个位置的指针(现在已失效),并可能导致分段错误

试试这个:

struct Person
{
    char name[40];
    int age;

};
void main()
{
    Person p;
    ifstream is("person.data",ios::binary);
    is.read((char*)&p,sizeof(p));
}

然后使用C字符串函数代替C++代码中的C++字符串,在代码< <代码> >代码>字符串> h <代码> < /P> 不过,老实说,你可能想听听@πάνταῥεῖ . 您正在尝试序列化C结构。在via struct中读取数据是一件非常“C”的事情,但您将“C++”类混入其中。这两种范式并不很好地结合,如果你真的想序列化C++类,我会从那里开始。

你使用的是<代码> siZoof(p)< /c>
字符串
类的长度可变。这意味着它本质上是一个结构,其中包含指向堆中其他一些字符的指针。试图通过结构读取字符串将不起作用。您必须将所有字符放在结构本身中,否则它只会读入一个指向堆中某个位置的指针(现在已失效),并可能导致分段错误

试试这个:

struct Person
{
    char name[40];
    int age;

};
void main()
{
    Person p;
    ifstream is("person.data",ios::binary);
    is.read((char*)&p,sizeof(p));
}

然后使用C字符串函数代替C++代码中的C++字符串,在代码< <代码> >代码>字符串> h <代码> < /P>


不过,老实说,你可能想听听@πάνταῥεῖ . 您正在尝试序列化C结构。在via struct中读取数据是一件非常“C”的事情,但您将“C++”类混入其中。这两种范式并不很好地结合,如果你真的想序列化C++类,我会从那里开始。

你需要查看序列化。您不能将复杂类作为二进制映像保存到文件中。您需要查看序列化。无法将复杂类作为二进制图像保存到文件中。是否接受答案?:)接受答案?:)