2
将C++中的BLOB作为字符串存储可以吗?我猜在BLOB中可能有一个空字符,这可能会导致像len()这样的std :: string操作失败。我试图将一个位图存储为一个BLOB。C++ - 将BLOB存储为字符串
最后,我想这个字符串返回存储到嵌入式数据库和读取串入的std :: string
感谢。
将C++中的BLOB作为字符串存储可以吗?我猜在BLOB中可能有一个空字符,这可能会导致像len()这样的std :: string操作失败。我试图将一个位图存储为一个BLOB。C++ - 将BLOB存储为字符串
最后,我想这个字符串返回存储到嵌入式数据库和读取串入的std :: string
感谢。
是的,这很好。 std::string
必须单独存储长度,因此它可以包含空字符。只要你有足够的内存,你可以将它存储在一个字符串中。
虽然你确实需要小心构造字符串。如果你只是使用了像std::string s = "Hello,\0 world!"
这样的字符,这将不起作用,因为从char*
转换只能转到第一个空字符。但是,std::string s("Hello,\0 world!", 14);
工作正常。
当然,如果您确实将char*
转换为data()
或c_str()
,那么您需要确保抓取长度。
嵌入式空值很好。只是不要在它上面使用'C'字符串函数。大小/长度不取决于内容。 –
当你说“存储”时,你是指在内存中的表示,还是保存到磁盘上的文件? –
据我所知,'std :: string'对象不能确定存储的实际数据,只能在数据的末尾添加一个'null'字符作为与c字符串的兼容性。作为一般原则,如果我要存储原始数据,我宁愿使用'std :: vector'(或'std :: vector '),因为它更准确地表达* intent *,但在数据完整性方面,不应该有任何问题。 –
Xirema