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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
#1

Чтение базы данных из файла - C++

25.04.2012, 02:11. Просмотров 2632. Ответов 19
Метки нет (Все метки)

База Данных “Студенты”.
Данные БД хранятся в файле.
Структура БД:
- № (номер элемента)
- ФИО студента
- Дата рождения (день, месяц, год)
- Институт
- Группа
- Курс
- Средний балл.

Вначале я объявляю структуру для баззы данных:

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct bd
    {
        int nom;
        char fio [30];
        int day:6;
        int month:5;
        int year;
        char inst [6];
        char gtup [7];
        int kurs:3;
        int sball;
    };
как мне осуществить чтение из текстового файла (через fstream желательно) и в каком виде и порядке данные должны храниться в текстовом файле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2012, 02:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение базы данных из файла (C++):

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Чтение из файла определённого места и сортировка данных исходя из этих данных - C++
Есть некий текстовый документ, содержащий информацию о посещении сайта в формате: Например 12.5.76.200 04:23 Mon Цель:...

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

Чтение данных из файла - C++
Доброго времени, долго искал ответ, решил все таки спросить. Есть файл в котором такие данные TTT ppp 5 5 5 EEE aaa 3 3 3 DDD vvv 6...

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

Чтение данных из файла - C++
Вот задание прочитать данные из файла и вывести их также как они в файле распалагаются на экран используя символьный массив...

19
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 02:15 #2
А файл какой текстовый или бинарный?
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:18  [ТС] #3
Цитата Сообщение от Avazart Посмотреть сообщение
А файл какой текстовый или бинарный?
текстовый файл.
сама база данных - динамический массив, объявляется примерно так:

C++
1
2
3
4
int n;
bd *bd1;
cin >> n;
bd1 = new bd [n];
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 02:20 #4
Можно перегрузить оператор << и >> относительно вашей структуры
Запись ведь тоже нужна?
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:28  [ТС] #5
Цитата Сообщение от Avazart Посмотреть сообщение
Можно перегрузить оператор << и >> относительно вашей структуры
не понял, си++ недавно начал учить

Цитата Сообщение от Avazart Посмотреть сообщение
Запись ведь тоже нужна?
нужна по идее, но сейчас мне главное - осуществить чтение из файла. что то типа

C++
1
2
3
4
5
6
7
ifstream f("1.txt");
for (int i=0; i<n; i++)
    {
       f>>bd1.nom[i] >> bd1.fio[i] >> .... >> bd1.sball [i];
       
    }
f.close();
только мой вариант вряд ли работать будет. как прочитать данные правильно и как должен выглядеть текстовый файл?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 02:29 #6
ак должен выглядеть текстовый файл?
Каждое поле разделенное пробелом ну или новой строкой
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:31  [ТС] #7
Цитата Сообщение от Avazart Посмотреть сообщение
Каждое поле разделенное пробелом ну или новой строкой
а для фамилия имя отчество (bd1.fio) типа char будет же. если мне надо "Иванов Иван Иван" как сделать чтоб он это всё в одно поле считывал?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 02:40 #8
Значит либо заранее заменять пробел перед записью например на "_" либо писать каждое поле в новой строке а потом читать с помощью getline()
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:44  [ТС] #9
а нельзя никак указать чтоб читал до разделителя (запятой или точки с запятой)?


Цитата Сообщение от Avazart Посмотреть сообщение
читать с помощью getline()
можете код написать?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 02:58 #10
Как считать строку?

Добавлено через 2 минуты
http://www.cplusplus.com/reference/string/getline/

Добавлено через 9 минут
У этой ф-ции третий параметр символ-разделитель, поумолчанию он '\n'
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 03:02  [ТС] #11
всё равно понять не могу.

к примеру
C++
1
2
3
std::string str;
    ifstream f("1.txt");
bd1[0].fio = cin.getline(f, str, '\n');
он подчёркивает точку и пишет "отсутствуют экземпляры перегруженная функция"

а если
C++
1
bd1[0].fio = getline(f, str, '\n');
то "getline не определён"

я что то в начале программы не подключил или не объявил?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 03:08 #12
Есть метод, а есть ф-ция:
C++
1
2
3
std::string str;
ifstream f("1.txt");
getline(f, str, '\n'); // ф-ция читает из файла строку в str
Теперь строка содержится в str
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 03:13  [ТС] #13
всё равно пишет getline не определён

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Теперь строка содержится в str
теперь, я так понимаю, мне надо нужное мне значение приравнять к str?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
25.04.2012, 03:15 #14
Ну да либо использовать метод
C++
1
2
3
char ch[255];
ifstream f("1.txt");
f.getline(ch);
0
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 03:16  [ТС] #15
а что делать с getline не определён?
0
25.04.2012, 03:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 03:16
Привет! Вот еще темы с ответами:

Чтение данных из файла - C++
Очень нужна помощь: никак не получается написать функцию чтения из файла на С++ Есть на С, но хочу на С++, все никак не выходит Вот...

Чтение данных из файла - C++
У меня такая проблема, мне дан бинарный файл, где записаны числа типа float. Мне необходимо их оттуда прочитать. Но никак не получается((...

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

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


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

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

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