2016-06-06 4 views
0

Я хочу написать буфер (const void* buffer) в rockdb.Запись буфера (void *) в rockdb

я сделал:

rocksdb::DB* db; 
rocksdb::Status status = rocksdb::DB::Open(options,"~/testdb", &db); 

var = 0; 
std::string key("k" + std::to_string(var)); 
db->Put(rocksdb::WriteOptions(), key, buffer); 

и у меня есть проблема, что:

No matching member function for call to 'Put'

Если я заменил buffer по фиктивной стоимости, например, "abc", нет никаких проблем. Поэтому, я думаю, проблема в переменной buffer.

Итак, учитывая общий указатель и его длину, как я могу написать буфер для rockdb?

+0

Что такое 'buffer' - какой тип? – Ajay

+0

@ Ajay 'const void *' –

+0

@GillBates, ладно, я не знаю об этом rockdb! – Ajay

ответ

2

Вы должны отдать свой указатель на const char*:

db->Put(rocksdb::WriteOptions(), key, (const char*)buffer); 

Убедитесь, что buffer является действительным C строка, хотя.

+0

Здравствуйте, в случае, если '' buffer'' является двоичной информацией, что мне делать? Большое спасибо за ваш ответ. –

+0

Вам нужно взглянуть на API-интерфейс rockdb, он использует фрагмент для аргументов ключа/значения. – yinqiwen

Смежные вопросы