std::ofstream::write adds characters

后端 未结 3 1504
执笔经年
执笔经年 2020-12-30 10:20

I am trying to write binary file using std::ofstream::write method. I found out, that some characters are not written as they are, for example:

         


        
相关标签:
3条回答
  • 2020-12-30 10:39

    The file is being written on a system that does text to binary translation. The value 10 (0A hex) in the lowest byte of i is being interpreted as a linefeed character (aka newline), and is being converted to a carriage return linefeed sequence (13 10 decimal, 0D 0A hex).

    To solve this issue, change the first line of your code snippet as follows:

    std::ofstream in("testout", std::ios::binary);
    

    This will instruct the C++ runtime library to treat the file as binary and not perform any translation of bytes between newline and carriage return linefeed sequences.

    0 讨论(0)
  • 2020-12-30 10:47

    You opened the file in text mode and running on Windows. It adds the 0x0d to 0x0a. You need to use binary mode when you create the ofstream instance.

    0 讨论(0)
  • 2020-12-30 10:49

    You´ll have to specify std::ofstream::binary when opening.

    Else, on Windows in textfile mode, \n (0x0a) in a program will be converted to/from \r\n (0x0d 0x0a) when writing/reading the file.

    0 讨论(0)
提交回复
热议问题