質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

2452閲覧

LevelDBにバイナリデータを格納する方法 C++

nao_otsu

総合スコア18

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/02/04 06:57

編集2016/02/05 09:43

###前提・実現したいこと

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の端末でコンパイル

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんにちは。

c++

1 is.read((char*)&value,sizeof(size));

ですが、多分、以下の間違いではないでしょうか?

c++

1 is.read((char*)value,size);

投稿2016/02/06 02:37

tatsuya6502

総合スコア2035

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問