2017-02-10 13 views
2

BLOBを文字列としてC++に格納することはできますか?私は、BLOB内にNULL文字があり、len()のようなstd :: string操作が失敗する可能性があると推測しています。私はBLOBとしてビットマップを格納しようとしています。C++ - BLOBを文字列として格納する

結局、私は組み込みデータベースにこの文字列を格納し、バックSTDに文字列を読みたい::文字列

感謝。

+1

埋め込みヌルは問題ありません。 'C'文字列関数を使用しないでください。サイズ/長さは内容に依存しません。 –

+0

"store"と言うとき、メモリ上の表現、またはディスク上のファイルに保存することを意味しますか? –

+4

私が知っている限り、 'std :: string'オブジェクトは格納されている実際のデータには無関係で、' null'文字をc-stringsとの互換性のあるものとしてデータの最後に追加するだけです。一般的な原則として、私が生データを保存しているなら、 'std :: vector '(あるいは 'std :: vector ')を使う方が好きです。なぜなら、* intent *何の問題もないはずです。 – Xirema

答えて

1

はい、これは問題ありません。 std::stringは、長さを別々に格納する必要があるため、ヌル文字を埋め込むことができます。十分なメモリがあれば、それを文字列で保存することができます。

文字列の作成には注意が必要です。 std::string s = "Hello,\0 world!"のようなsomethnigを使用しただけの場合は、char*からの変換が最初のヌル文字になるため、これは機能しません。ただし、std::string s("Hello,\0 world!", 14);は正常に動作します。

data()またはc_str()char*に変換する場合は、もちろん長さを取得する必要があります。

関連する問題