Ах, это правда, что leveldb принимает строки и может возвращать строку, , но структура Slice
также имеет конструктор с непрозрачным массивом данных:
// Create a slice that refers to data[0,n-1].
Slice(const char* data, size_t n)
Когда вы получаете ключ Slice
, у вас все еще есть char*
в качестве данных, так что вам не нужно беспокоиться о строках:
// Return a pointer to the beginning of the referenced data
const char* data() const { return data_; }
Если ваша цель - иметьцелое число в качестве ключа, затем просто преобразуйте ваше целое число в символ * и сохраните его в 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));
Нет необходимости в надоедливых и дорогих строках ...