【发布时间】:2013-01-08 12:24:15
【问题描述】:
我想在 leveldb 中存储 key(url) 和 value(jpg 图像)。据说,
键和值是任意字节数组。
如何使用 DB::Get API?
【问题讨论】:
我想在 leveldb 中存储 key(url) 和 value(jpg 图像)。据说,
键和值是任意字节数组。
如何使用 DB::Get API?
【问题讨论】:
Slice 不拥有内存(只是指向它),因此返回 Slice 意味着调用者应该释放内存。
所以需要一个具有值语义的类型。
二进制数组的自然值是std::vector<uint8_t>,正如它所暗示的那样。但是std::string 也可以代替使用(正如您在回答中指出的那样),如果您希望读取真正的字符串(不需要强制转换),它会更有用。
不过,主要问题是原因没有记录在案。
【讨论】:
我终于明白了! c++ std::string 使用 size() 方法获取数据长度,使用 .data() 获取数据值。 c++ std::string 不是由'\0'终止,而是由size()函数指定!
【讨论】:
'\0'终止;)
或者,如果您使用迭代器,您可以直接从返回切片的iter->Value() 函数中提取数据。这样可以避免复制到中间字符串中。
【讨论】: