C/C++

Нужно считать файл .dat C++

dotProductTest1BE.dat содержит чётное количество чисел формата IEEE-754 binary64, порядок следования байтов - big-endian, необходимо вывести все числа в консоль.
 #include 
#include
#include
#include
using namespace std;
vector load(const string& path) {
ifstream inp(path, ios::binary);
vector box;
double x;
while (inp.read((char*)&x, sizeof(x))) box.push_back(x);
inp.close();
return box;
}
int main() {
const string& path{ "dotProductTest1BE.dat" };
const auto query = load(path);
for (auto x : query) cout
Юра Бугаев
Юра Бугаев
71 725
Лучший ответ
Дмитрий Фролов Спасибо, далее в задаче понадобится
Дмитрий Фролов А если порядок следования байтов будет little-endian, что-то изменится?
Юра Бугаев Чтение байтов слева-направо либо справа-налево.
little-endian: 8 7 6 4 3 2 1
big-endian: 1 2 3 4 5 6 7 8
Не совсем понятно как быть с архитектурой системы. У меня Intel. Может вам нужно байты переворачивать? Стоило бы уточнить задание у того, кто вам его задал. А если у вас архитектура IBM 360, то и так всё будет хорошо работать. Вообще-то big-endian – это сетевой порядок данных., а ещё он используется для кодирования форматов изображений.
Вот пример кода на C++, который считывает числа из файла `.dat`, содержащего числа формата IEEE-754 binary64 в порядке big-endian, и выводит их в консоль:

```cpp
#include <iostream>
#include <fstream>
#include <iomanip>

int main() {
std::ifstream file("dotProductTest1BE.dat", std::ios::binary);

if (!file) {
std::cerr << "Не удалось открыть файл." << std::endl;
return 1;
}

// Определение размера файла
file.seekg(0, std::ios::end);
std::streampos fileSize = file.tellg();
file.seekg(0, std::ios::beg);

// Проверка на четное количество чисел
if (fileSize % sizeof(double) != 0) {
std::cerr << "Неверный формат файла." << std::endl;
return 1;
}

// Считывание чисел и вывод в консоль
double number;
while ( file.read (reinterpret_cast<char*>(&number), sizeof(double))) {
std::cout << std::fixed << std::setprecision(2) << number << std::endl;
}

file.close();

return 0;
}
```

Программа открывает файл "dotProductTest1BE.dat" в двоичном режиме и проверяет его успешное открытие. Затем она определяет размер файла и проверяет, что количество чисел в файле является четным числом. После этого она считывает числа из файла в переменную `number` и выводит их в консоль с фиксированной точностью два знака после запятой.

Убедитесь, что файл "dotProductTest1BE.dat" находится в том же каталоге, где и исполняемый файл программы, чтобы она могла успешно прочитать файл.
Жасик Жанауов
Жасик Жанауов
5 034