バイナリ に問題がありostringstream
ます。Googleのdense_hash_mapをシリアル化したい。これはファイルハンドルを使用して可能ですが、ドキュメントではこれが可能である必要があると主張しostringstream
ていても、を使用していません。
次のコードが機能します。
char *serializeTable( size_t &length ) {
// serialize to a temp file
FILE *f = fopen("D:\\Dumps\\Serialization2File.txt", "w");
bool result1 = serialize<Serializer, FILE>(m_serializer, f);
std::cout << "result1 = " << result1 << std::endl;
fseek(f, 0, SEEK_END);
int mylen = ftell(f);
fclose(f);
// read binary data from file
char *readbuf = new char[mylen];
std::ifstream rf("D:\\Dumps\\Serialization2File.txt", std::ios_base::binary);
rf.read(readbuf, mylen);
rf.close();
std::ofstream check("D:\\Dumps\\CheckSerializer.txt", std::ios_base::binary);
check.write(readbuf, mylen);
check.close();
length = mylen;
return readbuf;
}
次のコードは、最初の4つのシンボルのみを出力します。配列の残りの部分は、次のもので構成されます'\0'
。
char *serializeTable( size_t &length ) {
std::ostringstream output("", std::stringstream::out | std::stringstream::binary);
bool result = serialize<Serializer, std::ostringstream>(m_serializer, &output);
auto str = output.str();
std::cout << "str = " << str << std::endl;
}
出力:
str = W�B
それ以外の:
E1eGQgAAAAAAAgAAAAAAAAAAksFLAAAAAAAAAAAAAAAAAGWwQAUAAAAAAAAAAAAAAAAAakANCg.....