Я учусь писать / читать из двоичных файлов, и я хочу, чтобы мои файлы были доступны для чтения на любой машине, которая поддерживает C ++ 17. Поэтому у меня возникла ужасающая мысль: что если затронуты read () и write () по порядку номера машины?
Например: я запускаю этот код на машине с прямым порядком байтов,
#include <iostream>
#include <fstream>
#include <cstdint>
int main() {
std::ofstream Output("Hey.txt", std::ofstream::out | std::ofstream::binary);
if (Output.is_open()) {
int16_t i = 42;
Output.write((const char*)&i, 2);
}
}
Затем я передаю Hey.txt маленькой машине с порядком байтов, затем запускаю этот код на машине,
#include <iostream>
#include <fstream>
#include <cstdint>
int main() {
std::ifstream Input("Hey.txt", std::ifstream::in | std::ifstream::binary);
if (Input.is_open()) {
int16_t i;
Input.read((char*)&i, 2);
std::cout << i << std::endl;
}
}
Будет ли программа печатать 42? Или fstream обрабатывает разницу порядка байтов? Если нет, то есть ли способ предотвратить проблемы с порядком байтов?
Спасибо за ваше внимание.