我想在这里获取 struct testB 的大小(以字节为单位):
struct testA
{
int x;
};
struct testB
{
std::string guid;
testA userData;
};
我可以得到这样的尺寸,但这很愚蠢:
int testA::size()
{
return sizeof(testA);
}
int testB::size()
{
return guid.size()*sizeof(TCHAR) + userData.size();
}
有更简单的解决方案吗?
ps:手头的问题是这样的:
我想将一个对象故事化到数据库,所以当我的应用程序崩溃时,我可以取回我的数据。所以我使用了 sqlite,并将结构的所有成员保存在单独的行中。一切都很好,除了我有一个成员持有 Protobuf 消息的二进制字符串,它不能插入到数据库中,因为它会使 SQL 语句无效。
所以我来了2个解决方案:
1 将protobuf消息序列化为json/XML文本,这对我来说似乎很乏味
2 使用 sqlite3_bind_blob 将所有内容转储到数据库中,其第三个参数是以字节为单位的 blob 数据的大小,所以问题是:如何获取结构的大小(这很复杂)?