leveldb前缀查询

先创建一个函数,用于检查前缀

        bool isPrefix(const std::string & pfx , const std::string & str){
            auto p=pfx.c_str();
            auto s=str.c_str();
            int len = pfx.size();
            for(int i=0;i<len;i++){
                if(p[i]!=s[i])
                    return false;
            }
            return true;
        }

开始搜索(搜索到的结果插入到链表res中)

            leveldb::Iterator * it = classifies->NewIterator(leveldb::ReadOptions());//创建迭代器
 
            for(it->Seek(prefix)/*定位前缀*/; it->Valid(); it->Next()) {
 
                auto k = it->key().ToString();//key
                auto v = it->value().ToString();//value
 
                if(!isPrefix(prefix,k))
                    break;//前缀不匹配,说明搜索完了
 
                res.push_back(v);//插入链表
 
 
            }
            delete it;