Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:11     Чтение базы данных из файла #1
База Данных “Студенты”.
Данные БД хранятся в файле.
Структура БД:
- № (номер элемента)
- ФИО студента
- Дата рождения (день, месяц, год)
- Институт
- Группа
- Курс
- Средний балл.

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

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 желательно) и в каком виде и порядке данные должны храниться в текстовом файле?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2012, 02:11     Чтение базы данных из файла
Посмотрите здесь:

C++ Чтение данных из файла
C++ Чтение данных из файла
Чтение данных из файла C++
C++ чтение данных с файла.
чтение данных из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 02:15     Чтение базы данных из файла #2
А файл какой текстовый или бинарный?
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];
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 02:20     Чтение базы данных из файла #4
Можно перегрузить оператор << и >> относительно вашей структуры
Запись ведь тоже нужна?
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();
только мой вариант вряд ли работать будет. как прочитать данные правильно и как должен выглядеть текстовый файл?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 02:29     Чтение базы данных из файла #6
ак должен выглядеть текстовый файл?
Каждое поле разделенное пробелом ну или новой строкой
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:31  [ТС]     Чтение базы данных из файла #7
Цитата Сообщение от Avazart Посмотреть сообщение
Каждое поле разделенное пробелом ну или новой строкой
а для фамилия имя отчество (bd1.fio) типа char будет же. если мне надо "Иванов Иван Иван" как сделать чтоб он это всё в одно поле считывал?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 02:40     Чтение базы данных из файла #8
Значит либо заранее заменять пробел перед записью например на "_" либо писать каждое поле в новой строке а потом читать с помощью getline()
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 02:44  [ТС]     Чтение базы данных из файла #9
а нельзя никак указать чтоб читал до разделителя (запятой или точки с запятой)?


Цитата Сообщение от Avazart Посмотреть сообщение
читать с помощью getline()
можете код написать?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 02:58     Чтение базы данных из файла #10
Как считать строку?

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

Добавлено через 9 минут
У этой ф-ции третий параметр символ-разделитель, поумолчанию он '\n'
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 не определён"

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

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Теперь строка содержится в str
теперь, я так понимаю, мне надо нужное мне значение приравнять к str?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 03:15     Чтение базы данных из файла #14
Ну да либо использовать метод
C++
1
2
3
char ch[255];
ifstream f("1.txt");
f.getline(ch);
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 03:16  [ТС]     Чтение базы данных из файла #15
а что делать с getline не определён?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 03:19     Чтение базы данных из файла #16
А что и с моим кодом пишит?
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 03:20  [ТС]     Чтение базы данных из файла #17
Цитата Сообщение от Avazart Посмотреть сообщение
А что и с моим кодом пишит?
подчёркивает точку и пишет "отсутствуют экземпляры перегруженная функция..."
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 03:30     Чтение базы данных из файла #18
C++
1
2
3
char ch[255];
ifstream f("1.txt");
f.getline(ch,255);
Добавлено через 25 секунд
http://www.cplusplus.com/reference/i...tream/getline/
grumpy13
1 / 1 / 0
Регистрация: 12.04.2012
Сообщений: 20
25.04.2012, 03:32  [ТС]     Чтение базы данных из файла #19
спасибо большое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 03:33     Чтение базы данных из файла
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
25.04.2012, 03:33     Чтение базы данных из файла #20
Можно третий параметр ставить - символ разделитель
f.getline(ch,255,';');
Yandex
Объявления
25.04.2012, 03:33     Чтение базы данных из файла
Ответ Создать тему
Опции темы

Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru