问题陈述:用户提供了一些我必须存储在结构中的数据。我收到的这些数据采用数据结构,允许用户向其中动态添加数据。
要求: 我需要一种将这些数据连续存储在结构“内部”的方法。
例如。假设用户可以传递我必须存储的字符串。所以我写了这样的东西:
void pushData( string userData )
{
struct
{
string junk;
} data;
data.junk = userData;
}
问题:当我进行这种存储时,实际数据并没有真正存储在结构“内部”,因为字符串不是 POD。当我收到向量或列表时,也会出现类似的问题。
然后我可以做这样的事情:
void pushData( string userData )
{
struct
{
char junk[100];
} data;
// Copy userdata into array junk
}
这将数据存储在结构“内部”,但是,我不能对用户可以提供的字符串大小设置上限。
有人可以提出一些方法吗?
PS:我读过一些关于可序列化的东西,但如果它对我的情况有帮助,我就不能真正清楚地弄清楚。如果这是前进的道路,有人可以给出如何进行的想法吗?
编辑 :
- 不,这不是家庭作业。
- 我编写了一个实现,它可以通过消息队列传递这种结构。它适用于 POD,但我需要扩展它以传递动态数据。
这是消息队列获取数据的方式:
一世。给它一个指针并告诉它应该读取和传输数据的大小。
ii. 对于普通的旧数据类型,数据存储在结构内,我可以轻松地将这个结构的指针传递给消息队列给其他进程。
iii. 但是在向量/字符串/列表等情况下,实际数据不在结构内部,因此如果我传递这个结构的指针,消息队列不会真正传递实际数据,而是将存储在内部的指针这种结构。