我想在 leveldb 中存储键(url)和值(jpg 图像)。据说,
键和值是任意字节数组。
如何使用 DB::Get API?
Slice 不拥有内存(只是指向它),因此返回 Slice 意味着调用者应该释放内存。
所以需要一个具有值语义的类型。
std::vector<uint8_t>
正如它所暗示的那样,二进制数组的自然值是。但std::string
也可以代替使用(正如您在回答中指出的那样),如果您希望读取真正的字符串(不需要强制转换),它会更有用。
不过,主要问题是原因没有记录在案。
I finally got it! c++ std::string use size() method to get the data length, use .data() get the data value. c++ std::string is not terminated by '\0', but specified by the size() function!
或者,如果您使用迭代器,您可以直接从iter->Value()
返回切片的函数中提取数据。这避免了复制到中间字符串中。