将缓冲区 (void*) 写入 rocksdb
Writing a buffer (void*) to rocksdb
我想将缓冲区(const void* buffer
)写入 rocksdb。
我做到了:
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
变量。
那么,给定一个通用指针及其长度,我该如何将缓冲区写入 rocksdb?
您应该将指针指向 const char*
:
db->Put(rocksdb::WriteOptions(), key, (const char*)buffer);
确保 buffer
是有效的 C
字符串。
我想将缓冲区(const void* buffer
)写入 rocksdb。
我做到了:
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
变量。
那么,给定一个通用指针及其长度,我该如何将缓冲区写入 rocksdb?
您应该将指针指向 const char*
:
db->Put(rocksdb::WriteOptions(), key, (const char*)buffer);
确保 buffer
是有效的 C
字符串。