Как правильно считывать в структуру?

276
13 декабря 2017, 23:44

Есть текстовый файл 1.txt. Файл именно текстовый!

0500000052b89640
080000003e0aa740
0b0000002a5cb740
0e00000016aec740
110000000200d840
14000000ee51e840
17000000daa3f840
1a000000e37a0441
1d000000d9a30c41
20000000cfcc1441

И есть структура:

#pragma pack(push, 1)
typedef struct {
    int a;
    float b;
} structEx;
#pragma pack(pop)

Как правильно считать структуру в файл? Правильный ответ такой:

x.a       x.b
5         4.7
8         5.2
11        5.7
14        6.2
17        6.7
20        7.2
23        7.7
26        8.2
29        8.7
32        9.2
Answer 1

Примерно так - кстати, первой строчки в ваших данных нет:

#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
#pragma pack(push, 1)
struct structEx
{
    int a;
    float b;
};
#pragma pack(pop)
vector<structEx> v;
int main(int argc, const char * argv[])
{
    ifstream in("data");
    string s;
    while(getline(in,s))
    {
        structEx x;
        unsigned char * a = reinterpret_cast<unsigned char *>(&x);
        for(int i = 0; i < 8; ++i)
            *(a+i) = stoi(s.substr(i*2,2),nullptr,16);
        v.push_back(x);
    }
    for(auto x: v)
    {
        cout << setw(10) << x.a << setw(20) << x.b << endl;
    }
}
READ ALSO
Поиск слова в файле с помощью found

Поиск слова в файле с помощью found

Пишу код чтобы он искал введеное слово в файле и возвращал значение (false или true в зависимости от наличия слова), но программа всегда возвращает...

212
C и C++. Pointer(int*) to int

C и C++. Pointer(int*) to int

Вот код в C++

289
multiple definition of помогите [дубликат]

multiple definition of помогите [дубликат]

На данный вопрос уже ответили:

286
помогите пожалуйста с массивом [требует правки]

помогите пожалуйста с массивом [требует правки]

Дан одномерный массив, состоящий из  вещественных элементовНайти сумму элементов массива, расположенных между первым и вторым отрицательными...

292