levelDB遍历问题

xiaolomg 2012-12-28 09:56:24
有码有真相:
// test.cpp : Defines the entry point for the console application.
//

#include <tchar.h>
#include <stdio.h>
#include <Windows.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "leveldb.h"
#include <boost/lexical_cast.hpp>
using std::cout;
using std::endl;
//
#if defined _DEBUG

#if defined LEVELDB_DLL
#pragma comment(lib,"..\\_exports\\DebugDll\\leveldb_d.lib")
#else
#pragma comment(lib,"..\\_exports\\Debug\\leveldb_d.lib")
#endif

#else

#if defined LEVELDB_DLL
#pragma comment(lib,"..\\_exports\\ReleaseDll\\leveldb.lib")
#else
#pragma comment(lib,"..\\_exports\\Release\\leveldb.lib")
#endif

#endif


#define DB_BENCH

#if defined LEVELDB_DLL
#undef DB_BENCH
#undef DB_TEST
#endif

void WriteDb(leveldb::DB* db)
{
const char* Content = "We now decided that after three years it might";
char Buff[10];
ZeroMemory(Buff,sizeof(Buff));
leveldb::WriteOptions wo;
wo.sync = false;
for(int i = 0 ; i < 20 ;i++)
{
_itoa_s(i,Buff,10);

leveldb::Status s = db->Put(wo,Buff,Content);
}
}

void ReadDb(leveldb::DB* db)
{
leveldb::Iterator* it = db->NewIterator(leveldb::ReadOptions());
for (it->SeekToFirst(); it->Valid(); it->Next())
{
cout << it->key().ToString() << ": " << it->value().ToString() << endl;
//这里出现了无限循环,纳闷了,不应该啊,难道我用的版本有问题?
}
}

int main()
{
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
assert(status.ok());
WriteDb(db);
ReadDb(db);
}


知道的大婶提示下,为毛会出现无限循环?
...全文
216 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,640

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧