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

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

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

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

19.12.2012, 18:43. Просмотров 392. Ответов 4
Метки нет (Все метки)

Доброго времени суток!
Проблема, как я посмотрел, популярная, но, увы, так и не нашёл решения, подходящего мне.

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

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пасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать структуры из массива и вывести на экран (C++):

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

Считать с клавиатуры строку и вывести ее на экран 15 раз - C++
#include &lt;iostream&gt; #include &quot;stdafx.h&quot; using namespace std; int main() { //Считать с клавиатуры строку и вывести ее на...

Считать с клавиатуры строку и вывести ее на экран 15 раз - C++
Мой код: #include &lt;iostream&gt; using namespace std; int main() { char sentence; cout &lt;&lt; &quot;Enter whatever you want&quot; &lt;&lt;...

Считать предложения из txt и вывести их на экран в обратном порядке - C++
#include&lt;cctype&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main() { FILE * p_file; ...

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

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

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

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

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

Cпасибо!
А в цикле не пробовали в файл выводить?
0
some_vlad
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 6
19.12.2012, 18:59  [ТС] #3
Цитата Сообщение от vua72 Посмотреть сообщение
А в цикле не пробовали в файл выводить?
Почти сутки у монитора дают о себе знать: не совсем понимаю вашу идею.
0
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 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 файл.
1
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, зациклил, всё работает.
Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2012, 19:35
Привет! Вот еще темы с ответами:

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

Считать текст из файла и вывести на экран только предложения, не содержащие запятых - C++
Здравствуйте. Прошу помощи в написание программу на C++ &quot;Написать программу, которая считывает текст из файла и выводит на экран только...

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

Считать текст из файла, и вывести его на экран, заменив цифры от 0 до 9 словами - C++
Нужна Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова &quot;ноль&quot;, &quot;один&quot;,...&quot;девять&quot;,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.12.2012, 19:35
Ответ Создать тему
Опции темы

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