我很想知道如何实现std :: string以及它与c字符串的区别?如果标准没有指定任何实现,那么任何带有解释的实现都会很好,它如何满足标准给出的字符串要求?
我不是c ++专家,但过去我曾多次将事情序列化.不幸的是,这次我正在尝试序列化一个包含std :: string的类,我理解这很像序列化指针.
我可以将类写出来并再次读回来.所有int字段都很好,但是std :: string字段给出了"地址越界"错误,大概是因为它指向不再存在的数据.
这有一个标准的解决方法吗?我不想回到char数组,但至少我知道它们在这种情况下工作.如有必要,我可以提供代码,但我希望我已经很好地解释了我的问题.
我通过将类转换为char*并使用fstream将其写入文件来进行序列化.阅读当然恰恰相反.
引自C-std部分6.7.2.1,
struct s { int n; double d[]; };
Run Code Online (Sandbox Code Playgroud)
这是一个有效的结构声明.我正在寻找这种语法的一些实际用途.确切地说,这个构造如何比保持double*作为第二个元素更强或更弱?或者这是"你可以做多种方式"的另一种情况吗?
Arpan