啊,leveldb确实接受字符串并且它可以返回一个字符串,但是该Slice
结构也有一个带有不透明数据数组的构造函数:
// Create a slice that refers to data[0,n-1].
Slice(const char* data, size_t n)
当您获得密钥时Slice
,您仍然拥有 achar*
作为数据,因此您不必真正为字符串烦恼:
// Return a pointer to the beginning of the referenced data
const char* data() const { return data_; }
如果您的整个目标是将整数作为键,那么只需将整数转换为 char* 并将其存储在 中leveldb
,如下所示:
int oldKey = 123;
char key[8];
memset(key, 0, 8);
*(int*)(&key) = oldKey;
*(int*)(&key) += 1;
// key is now 124
// want to put it back in a slice?
Slice s(key, sizeof(int));
不需要讨厌和昂贵的字符串...