Binary 为什么leveldb::Get API使用std::string作为值类型?

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()函数中提取数据。这避免了复制到中间字符串中。片不拥有内存(只指向它),因此返回片意味着调用方应该释放内存 因此,需要一个具有值语义

我想在leveldb中存储键(url)和值(jpg图像)。据说,

键和值是任意字节数组


如何使用DB::Get API?

我终于找到了!C++ STD::String使用siz()方法获取数据长度,使用.DATA()获取数据值。C++ STD::字符串不是由“0”终止,而是由siz()函数指定的!p> 或者,如果使用迭代器,可以直接从返回切片的
iter->Value()
函数中提取数据。这避免了复制到中间字符串中。

片不拥有内存(只指向它),因此返回片意味着调用方应该释放内存

因此,需要一个具有值语义的类型

二进制数组的自然值应该是
std::vector
,正如它所暗示的那样。但是也可以使用
std::string
(正如您在回答中指出的那样),如果您希望读取真正的字符串(无需强制转换),则它更有用

主要问题是原因没有被记录在案。

实际上,基础数据保证会被
'\0'
;)终止