std::ofstreamがバイナリストリームでファイルを書く問題

1278 ワード

MPQパケットからバイナリストリームを読み出し、ハードディスク(HDD)にファイルを書きます.
DWORD size = SFileGetSize(hFile);
char* buffer = new char[size];
std::ofstream ofs;
ofs.open(name);
ASSERT(ofs.good());
ofs.write(buffer, size);
ASSERT(ofs.good());
ofs.close();
.xml,.lua、などのテキストはすべて正しいで、ただ.jpgこれらの画像は間違っています!
Openをofsに変更する.open(name, std::ios::out | std::ios::binary);
そうだ!
理由はofstreamがファイルを開くときにデフォルトでテキストフォーマットになっているからでしょう.の
void open(
    const char *_Filename,
    ios_base::openmode _Mode = ios_base::out,
    int _Prot = (int)ios_base::_Openprot
);
void open(
    const char *_Filename,
    ios_base::openmode _Mode
);
void open(
    const wchar_t *_Filename,
    ios_base::openmode _Mode = ios_base::out,
    int _Prot = (int)ios_base::_Openprot
);
void open(
    const wchar_t *_Filename,
    ios_base::openmode _Mode
);