Я пытаюсь преобразовать IO файла стиля C в IO файла стиля C ++. Мне нужно написать число 42 в виде 4-байтового целого числа со знаком.
Вот пример того, какой IO типа C, который я пробовал, сработал
#include <stdio.h>
#include <string>
#include <fstream>
using namespace std;
int main()
{
FILE *myFile;
myFile = fopen ("input_file.dat", "wb");
int magicn = 42;
fwrite (&magicn, sizeof(magicn), 1, myFile);
fclose (myFile);
return 0;
}
Я пытаюсь преобразовать вышеуказанный код в IO типа C ++ на основе предложения из другого вопроса, который я задал( Как записать строку с заполнением в двоичный файл, используя fwrite? ).
Вот моя попытка:
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
ofstream myFile ("input_file.dat", ios::binary);
int magicn = 42;
myFile << setw(sizeof(magicn)) << magicn;
myFile.close();
return 0;
}
Однако вывод, который я ожидаю, когда яиспользуйте команду 'xxd -b input_file.dat' не то же самое.
Ожидаемый вывод (сгенерированный с помощью кода ввода-вывода типа C)
0000000: 00101010 00000000 00000000 00000000 *. ..
Но я вижу (сгенерированный с моей попыткой ввода-вывода типа C ++)
0000000: 00100000 00100000 00110100 00110010 42
В поисках решения. Ценю помощь!