Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
salwlen
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 41
#1

Считывание из файла в структуру - C++

07.10.2016, 10:01. Просмотров 532. Ответов 25
Метки нет (Все метки)

Добрый день, столкнулся с такой проблемой. Есть файл со строками из 1 и 0
Пример:
1111110
1111000
1001011
...

Все строки одного размера

Нужно каждую строку считать в отдельное "слово" записанное в структуре
C++
1
2
3
4
struct slova
{
char s1,s2,s3; //...
};
Где "слово" s1 это первая строка (без разделителей \n)


В дальнейшем эти слова будут анализироваться(каждый разряд 1 или 0 соответствует своей команде), так что к каждому разряду должен быть доступ к примеру s1[5].

Пробовал считывать getline, но он считывает только первую строку. Так же пробовал с read, но в некоторых словах вышел "мусор", а в первом слове было несколько строк.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2016, 10:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание из файла в структуру (C++):

Считывание данных из файла в структуру - C++
из файла нужно считать данные и записать их в структуру. данные из файла: Петров П.П. С++ для чайников 2000 Программирование ...

Считывание информации из файла в структуру - C++
Добрый день! Помогите, пожалуйста, с решением задачи. Дан символьный файл f, содержащий сведения о студентах, записанные по...

Считывание всей строки из файла в структуру - C++
Привет. Есть программа, считывающая из файла некоторые данные про рабочих и вывод их на экран с использованием структуры. Проблема...

Считывание смешанной строки из файла в структуру - C++
Формат файла и данные записываемые структурной формой такие: Первое ФИО 1 | ж | 2001 | Минск | Неизвестное заболевание | 80291111111 ...

Считывание данных из текстового файла в структуру - C++
Программа не желает считывать данные из текстового файла, компилируется и работает норм, но как только нажму считать данные из файла, то...

Считывание из бинарного файла в структуру с последующим выводом - C++
В бинарном файле храниться инфа: Имя_пользователя дата_подключения номер Имя_пользователя дата_подключения номер и т.д. Есть...

25
nmcf
5682 / 4993 / 1701
Регистрация: 14.04.2014
Сообщений: 20,369
11.10.2016, 16:19 #16
Больше покажи. Так не понятно. И слово struct пишется только один раз при описании структуры.
0
salwlen
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 41
11.10.2016, 17:10  [ТС] #17
Упростил как мог
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <bitset>
#include <math.h>
 
using namespase std;
 
 
struct slova
{
    bitset<16> s1, s2; //таких 15 
    
};
 
struct IN1
{
    double a,b,c
};
 
struct OUT1
{
    
    double d,e,f;
};
 
 
void f_IN(slova &sn, IN1 &inn1, IN2 &inn2, OUT1 &out1, OUT2 &out2, OUT3 &out3, OUT4 &out4, OUT5 &out5)
{
    setlocale(LC_ALL, "Russian");
 
 
    
    //struct slova sn;
    ifstream ifs("slova.txt");
    //if (!ifs){
        //cout << "\n";
        //return 1;
    //}
 
    ifs >> sn.s1;
    
 
    ifs.close();
 
 
    ifstream ifin("in1.txt");
 
 
    ifin >> inn1.a;
    ifin >> inn1.b;
    ifin >> inn1.c;
    
 
    ifin.close();
 
 
    ifstream ifinDop("in3.txt");
    
 
    ifinDop >> out1.d;
    ifinDop >> out1.e;
    ifinDop >> out1.f;
 
 
    ifinDop.close();
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    slova sn;
    IN1 inn1;
    IN2 inn2;
    OUT1 out1;
    OUT2 out2;
    OUT3 out3;
    OUT4 out4;
    OUT5 out5;
    void f_IN(slova, IN1, IN2, OUT1, OUT2, OUT3, OUT4, OUT5);
 
    
    ofstream ofout1("out1.txt");
    if (!ofout1){
        cout <<"  out1.\n";
        return 1;
    }
 
    ofout1 << out1.d << endl;
    ofout1 << out1.f << endl;
    ofout1 << out1.e << endl;
    
 
    ofout1.close();
 
 
 
    
    
    std::system("pause");
    return 0;
}
0
nd2
2413 / 2002 / 704
Регистрация: 29.01.2016
Сообщений: 6,537
11.10.2016, 17:38 #18
Цитата Сообщение от salwlen Посмотреть сообщение
void f_IN(slova, IN1, IN2, OUT1, OUT2, OUT3, OUT4, OUT5);
void убери.

Добавлено через 1 минуту
Цитата Сообщение от salwlen Посмотреть сообщение
Упростил как мог
Открытие файлов для чтения проверяешь?
0
salwlen
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 41
11.10.2016, 18:03  [ТС] #19
Проверял, в функции закоментил, тк на return 1; жаловался. Void заменил на int, добавил return 0; в конец функции, раскоментил проверку открытия. Но основную проблему это не решает.

Добавлено через 7 минут
В файл out1.txt выводятся одни нули и перенос на строку вместо значений. Когда было все в int main нормально выводилось
0
nd2
2413 / 2002 / 704
Регистрация: 29.01.2016
Сообщений: 6,537
11.10.2016, 18:05 #20
Цитата Сообщение от salwlen Посмотреть сообщение
Void заменил на int
Где заменил? При вызове убери.
Цитата Сообщение от salwlen Посмотреть сообщение
Проверял, в функции закоментил, тк на return 1;
Другие (кроме "slova.txt") проверяешь на открытие?
Код показывай.
Цитата Сообщение от salwlen Посмотреть сообщение
Но основную проблему это не решает.
Какая у нас "основная проблема"?
0
salwlen
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 41
11.10.2016, 18:12  [ТС] #21
Error c4700: использована неинициализированная локальная переменная "out1".
Заменил в обоих местах.
Все файлы на открытие проверяю
0
nd2
2413 / 2002 / 704
Регистрация: 29.01.2016
Сообщений: 6,537
11.10.2016, 18:22 #22
Цитата Сообщение от salwlen Посмотреть сообщение
void f_IN(slova, IN1, IN2, OUT1, OUT2, OUT3, OUT4, OUT5);
C++
1
f_IN(sn, inn1, inn2, out1, out2, out3, out4, out5);
Цитата Сообщение от nd2 Посмотреть сообщение
Функция так вызывается:
C++
1
2
3
struct IN inn;
struct OUT out;
f(inn, out);
1
salwlen
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 41
28.10.2016, 15:23  [ТС] #23
Появилась необходимость объединить все структуры в одну - сделать вложенные структуры. Объединил структуры в одну, но возникла проблема с функциями и объявлениями их. Как правильно тогда записывать функции с переменными вложенных структур и объявлять их?
0
nmcf
5682 / 4993 / 1701
Регистрация: 14.04.2014
Сообщений: 20,369
29.10.2016, 07:36 #24
Ты их по-отдельности, что ли, используешь? Пример покажи.
0
salwlen
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 41
31.10.2016, 17:16  [ТС] #25
Вроде разобрался, так правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct NAME
{
       struct IN
     {
       double n1, n2;
       }in;
 
      struct OUT
      {
       double n1, b2;
       }out;
}name;
int f(NAME &name)
{
name.in.n1=5;
name.out.b2=6;
return 0;
}
int main()
{
name.in.n2=3;
name.out.n1=4;
f(name)
return 0;
}
Раньше просто структуры объявлялись в int main
C++
1
2
3
4
5
6
7
8
9
10
11
f(IN &in, OUT &out)
{
}
int main()
{
IN in;
OUT out;
 
f(in,out);
 
}
Равносилен ли такой перенос? Различие в том, что переменные становятся глобальными?
0
nmcf
5682 / 4993 / 1701
Регистрация: 14.04.2014
Сообщений: 20,369
31.10.2016, 18:39 #26
Если ты пользуешься глобальной структурой, то для чего передавать параметр? Да и вообще ты усложняешь: если всего четыре параметра, то можно вообще без структур обойтись, или использовать одну общую, просто дать разные имена полям.
0
31.10.2016, 18:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 18:39
Привет! Вот еще темы с ответами:

Заменить считывание с клавиатуры на считывание из файла - C++
Помогите пожалуйста, ни разу не работал со считыванием из файла поэтому не понимаю как и что делать. Почитал в интернете, попробовал, не...

Считывание файла в массив и запись нового файла - C++
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и сразу они переписываются в другой файл. В...

Считывание из файла - C++
Допустим, стоит условие: из файла записать данных в массив и потом из этого же файла в переменную. Насколько я понимаю,для этого необходимо...

Считывание из файла - C++
Помогите пожалуйста,никак не могу найти,как считать данные из такого файла: Rup 106 12 38 40.2 -51 09 01 300.88...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.