###前提・実現したいこと
levelDBに画像ファイルをバイナリデータで保存しようとしています。
keyにpathを格納してvalueにバイナリデータを格納するつもりです。
バイナリデータがうまくvalueに格納されているかも分かりません。
エラーが出るタイミングはwhile(is.eof()){}内です。
コンパイルは可能ですが、画像のパスを指定して実行するとエラーが出ます。
アドバイスや他にもっといい方法を知っている方は教えていただけると幸いです。
###発生している問題・エラーメッセージ
segumentation fault (core dumped)
###ソースコード
#include "leveldb/db.h"
#include <iostream>
#include <assert.h>
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[]){
std::string key(argv[1]); ifstream is(argv[1],ios::in | ios::binary); if(!is.is_open()){ cout << "path can not open"; return 1; } size_t size = (size_t)is.seekg(0,ios_base::end).tellg(); is.seekg(0,ios_base::beg); cout << size << endl; char *value = new char[size]; while(!is.eof()){ is.read((char*)&value,sizeof(size)); } is.close(); leveldb::DB* db; leveldb::Options options; options.create_if_missing = true; leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb",&db); assert(status.ok()); status = db->Put(leveldb::WriteOptions(),key,value); assert(status.ok()); std::cout <<"set (key) = (" << key << ")" << std::endl;
}
###補足情報(言語/FW/ツール等のバージョンなど)
C++ LevelDB Ubuntuの端末でコンパイル
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。