2
BLOBを文字列としてC++に格納することはできますか?私は、BLOB内にNULL文字があり、len()のようなstd :: string操作が失敗する可能性があると推測しています。私はBLOBとしてビットマップを格納しようとしています。C++ - BLOBを文字列として格納する
結局、私は組み込みデータベースにこの文字列を格納し、バックSTDに文字列を読みたい::文字列
感謝。
BLOBを文字列としてC++に格納することはできますか?私は、BLOB内にNULL文字があり、len()のようなstd :: string操作が失敗する可能性があると推測しています。私はBLOBとしてビットマップを格納しようとしています。C++ - BLOBを文字列として格納する
結局、私は組み込みデータベースにこの文字列を格納し、バックSTDに文字列を読みたい::文字列
感謝。
はい、これは問題ありません。 std::string
は、長さを別々に格納する必要があるため、ヌル文字を埋め込むことができます。十分なメモリがあれば、それを文字列で保存することができます。
文字列の作成には注意が必要です。 std::string s = "Hello,\0 world!"
のようなsomethnigを使用しただけの場合は、char*
からの変換が最初のヌル文字になるため、これは機能しません。ただし、std::string s("Hello,\0 world!", 14);
は正常に動作します。
data()
またはc_str()
でchar*
に変換する場合は、もちろん長さを取得する必要があります。
埋め込みヌルは問題ありません。 'C'文字列関数を使用しないでください。サイズ/長さは内容に依存しません。 –
"store"と言うとき、メモリ上の表現、またはディスク上のファイルに保存することを意味しますか? –
私が知っている限り、 'std :: string'オブジェクトは格納されている実際のデータには無関係で、' null'文字をc-stringsとの互換性のあるものとしてデータの最後に追加するだけです。一般的な原則として、私が生データを保存しているなら、 'std :: vector'(あるいは 'std :: vector ')を使う方が好きです。なぜなら、* intent *何の問題もないはずです。 –
Xirema