在C ++中将BLOB存储为字符串是否可以?我猜测BLOB中可能有一个空字符,可能导致像len()这样的std :: string操作失败。我正在尝试将位图存储为BLOB。
最终我想将此字符串存储到嵌入式数据库中,并将字符串读回到std :: string
感谢。
答案 0 :(得分:2)
是的,这很好。 std::string
必须单独存储长度,因此它可以嵌入空字符。只要你有足够的内存,你就可以将它存储在一个字符串中。
但是,你需要注意构造字符串。如果您刚刚使用像std::string s = "Hello,\0 world!"
这样的somethnig,这将无效,因为仅从char*
转换为第一个空字符。但是,std::string s("Hello,\0 world!", 14);
工作正常。
当然,如果您确实使用char*
或data()
转换回c_str()
,则需要确保获取长度。