Home  >  Q&A  >  body text

c++ - VS2017 fstream.write() always outputs an extra 0x0d in the middle?

#include "stdafx.h"
using namespace std;
int main() {
    ofstream out("out.dat");
    char ss[19] = { 0x78, 0x9c , 0xe3 , 0x62 , 0x60 , 0xe0
        , 0x62 , 0x60 , 0xf5 , 0x49 , 0x2d , 0x4b , 0xcd
        , 0x61 , 0x66, 0x60  , 0xa9 , 0x0a , 0xc8 };
    out.seekp(0);
    out.write(ss, 19);
    return 0;
}

输出: 20个字节

789c e362 60e0 6260 f549 2d4b cd61 6660
a90d 0ac8 
  ||________多了一个0x0d

VS2017,Win10SDK,Win7 x64 system
Release x86(Win32)
Please advise, what is going on? Is it a case or a BUG?

Supplement: It seems that when the number of output bytes is greater than or equal to 19, an extra 0x0d will be output in the middle, and there will be no problem if the output is less than 19 bytes

天蓬老师天蓬老师2685 days ago1187

reply all(1)I'll reply

  • PHP中文网

    PHP中文网2017-05-16 13:29:22

    Please use ios::binary to read and write binary files.

    ofstream out("out.dat", ios::binary);

    reply
    0
  • Cancelreply