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

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

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

Работа с файлами С++. Библиотека STL - C++

19.11.2016, 22:30. Просмотров 289. Ответов 3
Метки нет (Все метки)

Пожалуйста, подскажите.
Файл читает только одну строку, а в файле больше.
Пример : Петров Петр Петрович 10 11 68
Иванов Иван Иванович 25 03 90
Как сделать так, что бы брало по строкам и отдельно по переменным? Где ошибка в коде?
Вот код класса :
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
#include <iostream>
#include <fstream>
using namespace std; 
 
class FIO
{
public:
    
    char F[20]; //Фамилия
    char I[20]; //Имя
    char O[20]; //Отчество
    unsigned short int Dt[3]; //Дата рождения
 
    void getfio() { //Функция считывания данных о людях
        ifstream in; // Объявили файл
        in.open("input.txt");
        in >> F; 
        in >> I;
        in >> O;
        for (int j = 0; j<3; j++)
            in >> Dt[j];
        
        
        in.close(); 
        //Закрыли файл
    
    }
};
Вот основной код:
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
void main(){
    setlocale(LC_ALL, "RUS");
    list<FIO> myList; //Объявили список
    list<FIO>::iterator iter; //Объявили итерации
    FIO group; //Объявили объект
    //Создаем список
    ifstream in; // Объявили файл
        in.open("input.txt");
    for (int i = 0; i < 2; i++) {
        group.getfio(in); //Вызвываем функцию
        myList.push_back(group); //Данные вносим в конец списка 
    }
    in.close(); 
    //Выводим записи
    for (iter = myList.begin(); iter != myList.end(); ++iter)
    {
    cout << "Имя: " << iter->I << " " << "Отчество: " << iter->O << " " << "Фамилия: " << iter->F << " " << "Дата рождения: ";
            
        for (int j = 0; j < 3; j++) {
            cout << iter->Dt[j];
            if (j<2) 
                cout << "."; //разделитель даты
        }
        cout << endl;
    }
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2016, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами С++. Библиотека STL (C++):

Работа с файлами. Библиотека STL - C++
Здравствуйте, помогите пожалуйста с этим заданием) Для цветов, поставляемых на склад задаются: регистрационный номер, название,...

Библиотека STL - C++
Добрый вечер, очень нуждаюсь в Вашей помощи. Пропустила тему и теперь не успеваю в ней раобраться.. Помогите пожалуйста переписать код...

библиотека STL - C++
Подскажите где можно почитать про библиотеку STL. Говорю сразу с английским не дружу((

Стандартная библиотека C++ и STL - C++
Вот нашел такие строки в книге Эккеля &quot;Философия С++&quot; В частности например класс vector автор относит к библиотеки С++, причем...

Библиотека шаблонов STL - C++
Здравствуйте, как можно сформировать массив множеств ptr, который формируется из строки str = &quot;the best way of doing something well&quot;, а ptr...

Библиотека STL, сортировка - C++
Сортировка слов по количеству вхождений в слово его первой буквы... Можно какой-нибудь пример?? Можно не всю программу, а только...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John999
223 / 106 / 49
Регистрация: 17.10.2016
Сообщений: 312
19.11.2016, 23:46 #2
Цитата Сообщение от programmmistka Посмотреть сообщение
C++
1
2
void getfio() { //Функция считывания данных о людях
 ifstream in; // Объявили файл
C++
1
 
C++
1
2
3
4
5
void getfio( ifstream  & in)
{
    // ifstream in 
//  in.open("input.txt");
// in.close();

Цитата Сообщение от programmmistka Посмотреть сообщение
Файл читает только одну строку, а в файле больше.
ifstream.getline, потом разбить строку
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
19.11.2016, 23:49 #3
Да убери уже close() из функции - сколько повторять? Файл закроется и ничего не прочитаешь.
0
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
20.11.2016, 11:27 #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
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
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
 
class FIO
{
public:
    char * getSoname(){ return F ; }
    char * getName(){ return I ; }
    char * getPatronymic(){ return O ; }
    int  getDate(int i){ return Dt[i] ; };
 
    void getfio(ifstream &in)
        { 
            in >> F;
            in >> I;
            in >> O;
            for (int j = 0; j < 3; j++)
                in >> Dt[j];
        }
        
 
private:
    char F[20]; //Фамилия
    char I[20]; //Имя
    char O[20]; //Отчество
    int Dt[3]; //Дата рождения
        
 
    
};
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "RUS");
    
    
    list<FIO> myList; //Объявили список
    list<FIO>::iterator iter; //Объявили итерации
    FIO group; //Объявили объект
    //Создаем список
    ifstream in; // Объявили файл
    in.open("input.txt");
    if (in)
        {
            while (!in.eof())
                {
                    group.getfio(in); //Вызвываем функцию
                    myList.push_back(group); //Данные вносим в конец списка 
                }
        }
    in.close();
    
    //Выводим записи
    for (iter = myList.begin(); iter != myList.end(); ++iter)
    {
        cout << "Имя: " << iter->getName() << " " << "Отчество: " << iter->getPatronymic() << " " << "Фамилия: " << iter->getSoname() << " " << "Дата рождения: ";
 
        for (int j = 0; j < 3; j++) {
            cout << iter->getDate(j);
            if (j<2)
                cout << "."; //разделитель даты
        }
        cout << endl;
    }
    
    system("pause");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2016, 11:27
Привет! Вот еще темы с ответами:

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

Библиотека стандартных шаблонов STL - C++
1. Создайте пустой целочисленный вектор и поместите в него 10 случайных чисел с интервалом значений от -15 до 15. 2. Напишите две...

Библиотека STL, класс вектор - C++
Помогите написать прогу... вот задание: Использовать класс vector библиотеки STL для хранения каталога книг. Книги характеризуются...

Библиотека STL, + задача с её использованием - C++
Доброго времени суток, о существовании библиотеки шаблонов я узнал 2 недели назад. У меня есть задача: Но это глобальная задача,...


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

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

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