leveldb调用get时,string把value截断。解决方案
来源:互联网 发布:淘宝网购物ppt 编辑:程序博客网 时间:2024/06/07 09:14
用leveldb的get接口如下:
virtual Status Get(const ReadOptions& options, const Slice& key,std::string* value) = 0;
以上标红的部分会将存入到leveldb中的字符串截断,如果存入的是(str = “123\0456”)
则调用get接口只能得到value = 123.
因此可以通过如下方式进行解决:(放弃使用get接口,使用迭代器)
/*get content*/
Iterator* iter_content = db->NewIterator(ReadOptions());
iter_content->Seek(Slice(strDetailKey));
*len = iter_content->value().size();
if (0 == *len)
{
ldout(cct, 5) << "###############################" << iter_content->value().size() << dendl;
return E_GET_FAILED;
}
memcpy(content, iter_content->value().data(), *len);
如果在leveldb的put时,出现这个问题,可以放弃使用 Slice() : data_(""), size_(0) { }。改成使用:
// Create a slice that refers to d[0,n-1].
Slice(const char* d, size_t n) : data_(d), size_(n) { }
这样就成功解决了put,get的问题
- leveldb调用get时,string把value截断。解决方案
- ERROR 1366 (HY000): Incorrect string value-解决方案
- java读写excel时出现Cannot get a NUMERIC value from a STRING cell的解决方法
- leveldb之Put、Get操作
- leveldb之Put、Get操作
- django admin 中文报错Incorrect string value解决方案
- ERROR 1366 (HY000):Incorrect string value解决方案(亲测)
- Mysql 插入中文错误:Incorrect string value 解决方案
- Swift anyobject 如何把value强转成String类型,或者判断value的类型?
- string -- value
- swift截断String末尾字符
- jedis调用redis之String数据Key-Value
- <input>动态拼接时value中空格后的内容被截断
- leveldb注释7–key与value
- Python leveldb数据库 把txt的数据存入到leveldb
- LevelDB场景分析3--Put,Get,Delete
- index 把@前的截断作为
- HSSFCell:You cannot get a string value from a numeric cell
- AS配置SDK
- C# string转byte[]
- IOS-Quartz2D基础绘画
- java学习阶段性总结
- 关于dataGrid的排序自定义排序规则
- leveldb调用get时,string把value截断。解决方案
- hdu 4287 Intelligent IME STL应用
- 【c++程序】指针数组与数组指针
- Android简单通讯录的开发
- HTML网页开发(燕十八)-实战首页布局-作业
- HTML5学习---必学的14大知识点(资源大全)
- Tomcat学习总结(6)——Tomca常用配置详解
- 读书-方与圆
- PHP 对 png 图像进行缩放,支持透明背景