今回、御教授いただきたいのはstd::ostringstreamに取り込んだバイナリデータのhex表示に
関してのものです。
現在、boostのシリアライズ機能を利用して、バイナリにシリアライズしたデータを
sqliteのバイナリ形式(blob)としてデータベースに取り込みたいと思っております。
大体の所まではいっているのですが、もうちょっとのところでつまづいております。
流れとしては
std::ostringstream os;
boost::archive::binary_oarchive bo(os);
bo << (const mydata<float>&) info;
std::string query = "insert into my_table(mydata) values( ? );";
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(database, query.c_str(),
-1, &statement, 0) == SQLITE_OK){
int rc = 0;
rc = sqlite3_bind_blob(statement, 1, os.str().c_str(), os.str().length(),
NULL);
それぞれ動作を確認しておりますが、バイナリデータをc_str()で吐き出すときにC_strで表現できない
部分が無くなっているようです。(標準出力にstringのままとc_strで出した場合とでの表示が異なります。)
これを回避する方法としてバイナリデータをHeX表示で受け渡しすることを考えております。(もともと、sqliteの
バイナリはhexでやりとりするのが普通のようです。)
c_strにHeXで吐き出す方法はございますでしょうか。
ご教授いただければ幸いです。
また、他の解決法がございましたらそちらも歓迎致します。