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
Вот пример кода на 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" находится в том же каталоге, где и исполняемый файл программы, чтобы она могла успешно прочитать файл.
```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" находится в том же каталоге, где и исполняемый файл программы, чтобы она могла успешно прочитать файл.
Похожие вопросы
- Помогите пожалуйста. Нужно чтоб эта программа, автоматически создавала txt. файл. На C++. Напишите рабочую программу.
- Помогите пожалуйста, нужно сделать программу на C++
- Помогите, пожалуйста, нужно написать программу на C++
- Создать файл ABONENT.dat, содержащий записи следующей структуры: ФИО абонента; его номер телефона. на языке си++
- Модули. Коммуникация между двумя .c файлами.(Си)
- C++ библиотека fstream. при использовании Кириллицы изменяется кодировка в создаваемом файле..
- Помогите с файлами C++
- C++ Работа с файлами.
- Помогите решить задачку по теме работа с файлами C++
- Как в C++ продолжить классы разные сгруппировано в файлах .h и .cpp, при этом не переопределяя классы эти?
little-endian: 8 7 6 4 3 2 1
big-endian: 1 2 3 4 5 6 7 8
Не совсем понятно как быть с архитектурой системы. У меня Intel. Может вам нужно байты переворачивать? Стоило бы уточнить задание у того, кто вам его задал. А если у вас архитектура IBM 360, то и так всё будет хорошо работать. Вообще-то big-endian – это сетевой порядок данных., а ещё он используется для кодирования форматов изображений.