2017-07-31 5 views
-2

私はsqliteデータベースに格納されているプロトコルバッファファイルを解析しようとしています。私はストリームについて多くを知らないので、私は立ち往生しています。const void *をistreamに変換するには?

//Read file into a buffer 
ifstream file(FileName, ios::in | ios::binary); 
file.seekg(0, ifstream::end); 
streampos size = file.tellg(); 
file.seekg(0); 

char* buffer = new char[size]; 
file.read(buffer, size); // Later insert this buffer as blob to sqlite 

//... 
//relevant sqlite code 
int buffer_size = sqlite3_column_int(stmt, 0); //size of the blob in bytes 
const void* buffer = sqlite3_column_blob(stmt, 1); // blob data 

プロトコルバッファ機能解析する

ParseFromIstream(std::istream * input) 

だから、本当の問題は、(定数ボイド*)はstdに変換する方法を、おそらくです:::ここで私はsqliteのにファイルを挿入するために使用するコードですistream?

答えて

1

効率が低下するだけなので、ストリームに変換しないでください。いるProtobufがarrayから解析する方法を持っているので、これはあなたが使うべきものです:私はobj.ParseFromArray(バッファ、BUFFER_SIZE)を使用してい

ProtobufObj obj; 
obj.parseFromArray(static_cast<const char*>(buffer), buffer_size); 
+0

。キャストする必要はありません。その機能を指摘してくれてありがとう。 – Carl

関連する問題