2016-06-06 9 views
0

Ich möchte einen Puffer (const void* buffer) in rocksdb schreiben.Schreiben eines Puffers (void *) nach rocksdb

ich getan habe:

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); 

und ich habe das Problem, dass:

No matching member function for call to 'Put'

Wenn ich buffer durch Dummy-Wert ersetzt, wie "abc", gibt es kein Problem. Daher denke ich, das Problem ist buffer variabel.

Also, einen allgemeinen Zeiger und seine Länge gegeben, wie könnte ich den Puffer zu rocksdb schreiben?

+0

Was genau ist 'Puffer' - welcher Typ? – Ajay

+0

@Ajay 'const void *' –

+0

@GillBates, In Ordnung, ich bin mir dieser rocksdb nicht bewusst! – Ajay

Antwort

2

Sie sollten Ihren Zeiger auf const char* Stimmen:

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

Stellen Sie sicher, dass buffer obwohl eine gültige C Zeichenfolge ist.

+0

Hallo, wenn '' buffer'' binäre Daten sind, was soll ich tun? Vielen Dank für deine Antwort. –

+0

Sie müssen sich die API von rocksdb ansehen, sie verwendet Slice, um Schlüssel/Wert-Argumente zu umbrechen. – yinqiwen