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

Считать структуры из массива и вывести на экран - C++

Войти
Регистрация
Восстановить пароль
 
some_vlad
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 6
19.12.2012, 18:43     Считать структуры из массива и вывести на экран #1
Доброго времени суток!
Проблема, как я посмотрел, популярная, но, увы, так и не нашёл решения, подходящего мне.

Есть структура.

C++
1
2
3
4
5
6
7
8
9
struct STUDENT
{
    char name[15];
    char surname[15];
    bool gender;
    int age;
    int nsb;
    int index;
};
Есть функция записи структур в файл.
Оператор "<<" перегружен.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void input (STUDENT &s)
{
    system("cls");
 
    cout << "\n\n[ Input information to the DB. ]" << endl;
 
    cout << "\nName: ";                  cin >> s.name;
    cout << "Surname: ";                 cin >> s.surname;
    cout << "Gender (1-M, 0-F): ";    cin >> s.gender; 
    cout << "Age: ";                        cin >> s.age;
 
    ofstream fout ("D:\\database1.txt", ios_base::app);
    fout << s << endl;
}
Как должна выглядеть функция считывания из файла и вывода на экран в этом случае?

Если просто взять ifstream и вывести, он выводит только последнюю введённую структуру.
Как быть?
fopen не предлагать, только fstream.

Cпасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 18:43     Считать структуры из массива и вывести на экран
Посмотрите здесь:

Считать текст из файла и вывести на экран его предложения в обратном порядке C++
Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова C++
C++ Считать текст из файла и вывести на экран только предложения, не содержащие запятых
C++ Считать текст из файла и вывести на экран слова из него в алфаыитном порядке
Считать текст из файла, и вывести его на экран, заменив цифры от 0 до 9 словами C++
C++ Файлы: считать текст из файла и вывести его на экран, заменяя...
Считать текст из файла и вывести на экран только предложения начинающиеся с тире C++
Считать текст из файла и вывести на экран только предложения, не содержащие запятых C++
C++ Считать из файла и вывести на экран
C++ Считать текст из файла и вывести на экран только предложения, начинающиеся с тире
Записать в двоичный файл строку, потом считать ее и вывести на экран C++
C++ Считать текст из файла и вывести на экран только предложения не содержащие запятых

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
19.12.2012, 18:52     Считать структуры из массива и вывести на экран #2
Цитата Сообщение от some_vlad Посмотреть сообщение
Доброго времени суток!
Проблема, как я посмотрел, популярная, но, увы, так и не нашёл решения, подходящего мне.

Как должна выглядеть функция считывания из файла и вывода на экран в этом случае?

Если просто взять ifstream и вывести, он выводит только последнюю введённую структуру.
Как быть?
fopen не предлагать, только fstream.

Cпасибо!
А в цикле не пробовали в файл выводить?
some_vlad
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 6
19.12.2012, 18:59  [ТС]     Считать структуры из массива и вывести на экран #3
Цитата Сообщение от vua72 Посмотреть сообщение
А в цикле не пробовали в файл выводить?
Почти сутки у монитора дают о себе знать: не совсем понимаю вашу идею.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
19.12.2012, 19:01     Считать структуры из массива и вывести на экран #4
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
using namespace std;
string stroka;
fstream fin ("filename", ios_base::in)
..
// проверяем, что открыли файл
if (fin.is_open()==false)
{
    cerr<< "Can't open file. Bye.\n"; // не удается открыть файл
    exit(EXIT_FAILURE);
} else
{
    while (!fin.eof()) {
        ///////////////////////////
        1) getline(fin, stroka); //читаем строку с разделителями и потом ее преобразуем в нужный тип
        cout << stroka
        или
        2) fin >> s.a и т.д.
        cout << s.a ...
        /////////////////////////// 
         .....
         
    }
    fin.clear(); // закрываем
  fin.close(); // закрываем
}
А вообще структуры как правило сохранеяют в binary файл.
some_vlad
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 6
19.12.2012, 19:35  [ТС]     Считать структуры из массива и вывести на экран #5
Цитата Сообщение от vua72 Посмотреть сообщение
C++
1
2
1) getline(fin, stroka); //читаем строку с разделителями и потом ее преобразуем в нужный тип
cout << stroka
Вот этим методом выводится только первая строка файла.
Суть, первая введённая структура.

Добавлено через 17 минут
vua72, зациклил, всё работает.
Спасибо!
Yandex
Объявления
19.12.2012, 19:35     Считать структуры из массива и вывести на экран
Ответ Создать тему
Опции темы

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