新年早々質問させて頂きます。
現在、プレイヤーの名前(std::string)をバイナリで保存しようとしてるのですが、
16進数に変換して保存する、再度読み込む時は16進数から文字とすれば良いのでしょうか。
std::stringまま保存できれば楽なのですが、できなさそうなので。
よろしくお願いします。
[追記]
ちなみに、セーブデータはこうなってます。 一応そのままで保存、読み込みができたのですが、
StSaveData save_data = {};
char* data = GetData(); // ファイルからデータ読み込み
memcpy( &save_data, data, sizeof(StSaveData) );
試しでstd::stringをコメントアウトしてみたところ、例外が発生することなく正常に終了できたので、このまま保存しているのが悪いのかなと思い質問しました。
sizeofあたりが怪しいかなと思ってます。
[追記2]
#include <iostream>
#include <string>
#include <fstream>
int main()
{
std::string str("ABC");
{
std::ifstream ifs( "test.dat", std::ios::binary | std::ios::in );
if( ifs )
{
ifs.read( reinterpret_cast<char*>( &str ), sizeof( str ) );
}
}
std::cout << str << std::endl;
{
std::ofstream ofs( "test.dat", std::ios::binary | std::ios::out | std::ios::trunc );
ofs.write( reinterpret_cast<char*>( &str ), sizeof( str ) );
}
return 0;
}
簡単に言うと、これだと落ちちゃうのでどうにかならないかということです。
一文字一文字やっていくしかないのでしょうか。
よろしくお願いします。