Binary 为什么leveldb::Get API使用std::string作为值类型?
我想在leveldb中存储键(url)和值(jpg图像)。据说, 键和值是任意字节数组Binary 为什么leveldb::Get API使用std::string作为值类型?,binary,leveldb,Binary,Leveldb,我想在leveldb中存储键(url)和值(jpg图像)。据说, 键和值是任意字节数组 如何使用DB::Get API?我终于找到了!C++ STD::String使用siz()方法获取数据长度,使用.DATA()获取数据值。C++ STD::字符串不是由“0”终止,而是由siz()函数指定的!p> 或者,如果使用迭代器,可以直接从返回切片的iter->Value()函数中提取数据。这避免了复制到中间字符串中。片不拥有内存(只指向它),因此返回片意味着调用方应该释放内存 因此,需要一个具有值语义
如何使用DB::Get API?我终于找到了!C++ STD::String使用siz()方法获取数据长度,使用.DATA()获取数据值。C++ STD::字符串不是由“0”终止,而是由siz()函数指定的!p> 或者,如果使用迭代器,可以直接从返回切片的
iter->Value()
函数中提取数据。这避免了复制到中间字符串中。片不拥有内存(只指向它),因此返回片意味着调用方应该释放内存
因此,需要一个具有值语义的类型
二进制数组的自然值应该是std::vector
,正如它所暗示的那样。但是也可以使用std::string
(正如您在回答中指出的那样),如果您希望读取真正的字符串(无需强制转换),则它更有用
主要问题是原因没有被记录在案。实际上,基础数据保证会被'\0'
;)终止