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

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

Войти
Регистрация
Восстановить пароль
 
Darkos
5 / 5 / 4
Регистрация: 16.05.2014
Сообщений: 82
Завершенные тесты: 1
#1

Функция чтения из файла - C++

17.05.2014, 21:48. Просмотров 923. Ответов 6
Метки нет (Все метки)

Написал программу которая в зависимости от выбора пункта меню, записывает данные в файл или читает их.
Все было нормально пока не дошел до функции чтения из файла. Сначала хотел чтоб выводилась заданная строка, но у меня вообще ничего не получается вывести. Подскажите, как решить проблему?
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
// Программа учета успеваемости 
#include <iostream>
#include <fstream>
#include <string>
#include "klas.h"
;using namespace std;
 
int ex()
{
    error:
        int i;
        cout << "Для выхода в главное меню нажмите >> 1" << endl << "Ваш выбор >> ";
        cin >> i;
        if(i == 1) {return 1;}
        else {system("cls"); cout << "Ошибка ввода! Повторите попытку." << endl; goto error;}
}
int get()
{
    setlocale(0, "");
    ifstream fin("persons.txt", ios::in);
    if(!fin.is_open()) {cout << "Файл не найден!";}
    else
    {
        long file_size;
        fin.seekg(0, ios::end);
        file_size = fin.tellg();
        if(file_size == 0) {cout << "Файл пустой! Сначала заполните его!" << endl;}
        else
        {
            //В этой части нужно написать код, который будет выводить текст из файла
        
        
        }
    }
    cin.get();
    ex();
    return 0;
}
     .  .  .
    
}
void main()
{
    setlocale(0, "");            // Включаем русский язык
   
    .  .  .
 
get:
    get();
    goto menu;
 
   .  .  . 
 
exit:   
    cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2014, 21:48     Функция чтения из файла
Посмотрите здесь:

Функция чтения из файла - C++
Здравствуйте, пытаюсь написать функцию, которая бы выводила информацию из файла, без функции код выглядит так: ifstream infileout; ...

Функция для чтения из файла в матрицу - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;fstream&gt; using namespace std; void setvector(vector&lt;vector&lt;int&gt; &gt; matrix,...

Функция чтения столбцов чисел из текстового файла - C++
Необходима функция, которая откроет текстовый файл, прочтет заранее заданное количество столбцов в массив массивов. В файле находятся не...

Нужен пример кода чтения из файла, сравнение и функция рандом - C++
Нужен пример кода -Открываем файл -Считываем содержимое(будет 4 числа) -Очищаем файл -Записываем в файл 4 случайных числа...

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

Функция чтения cin.get - C++
Подскажите пожалуйста почему функция cin.get(str, len, '0') считывает не (len - 1) как должна, а (len - 2) символов ? #include &lt;iostream&gt;...

ошибка чтения из файла - C++
задача такая: нужно считать из файла текст. написал программу, но она считывает только одну строку, т.е. до \n. Как написать, чтобы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 665
Завершенные тесты: 1
18.05.2014, 00:30     Функция чтения из файла #2
Это обычный поток. работай с ним как с cin'ом:
C++
1
fin >> /*что-то*/
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 01:42     Функция чтения из файла #3
Цитата Сообщение от Darkos Посмотреть сообщение
записывает данные в файл или читает их.
Цитата Сообщение от Darkos Посмотреть сообщение
Все было нормально пока не дошел до функции чтения из файла.
Какие данные? Как записывали? Зачем, перед чтением, определяете размер данных в файле?
Darkos
5 / 5 / 4
Регистрация: 16.05.2014
Сообщений: 82
Завершенные тесты: 1
18.05.2014, 10:02  [ТС]     Функция чтения из файла #4
Цитата Сообщение от monolit Посмотреть сообщение
fin >> /*что-то*/
Пробовал и так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   .  .  .
else
    {
        long file_size;
        fin.seekg(0, ios::end);
        file_size = fin.tellg();
        if(file_size == 0) {cout << "Файл пустой! Сначала заполните его!" << endl;}
        else
        {
            
            string str;
            fin >> str;
            cout << str;  //Вместо того чтоб вывести str переходит сразу к ex();
        
        }
    }
    ex();
  .  .  .
Добавлено через 12 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Какие данные?
Данные в файле persons.txt таким образом:
фамилия имя 1 2 3 4 5 6
фамилия имя 1 2 3 4 5 6
1,2,3,4,5 - оценки
6 - средний бал

Цитата Сообщение от alsav22 Посмотреть сообщение
Как записывали?
Записывал так:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* klas.cpp */
 
#include <iostream>
#include <fstream>
#include <string>
#include "klas.h"
;using namespace std;
 
 
/* Конструктор класса */ klas::klas()
{
    string s_name,s_famil;           // Обьявляем переменные
    cout << "**************  Имя и фамилию вводить английскими буквами  **************" << endl << endl 
         <<"Введите имя >>     ";
    cin >> s_name;
    cout << "Введите фамилию >> ";   // Вводим данные
    cin >> s_famil;
    name = s_name;
    famil = s_famil;
    
    klas::set_scores();
}
 
/* Деструктор класса */  klas::~klas()
{
    klas::save();
}
/* Записываем оценки, вычисляем средний бал */  void klas::set_scores()
{
    setlocale(0, "");            // Включаем русский язык
    ser_bal = 0.0;
    for(int i=0; i<5; i++)
    {
error:
        cout << "Введите оценку " << i+1 << " >> ";
        cin >> scores[i];
        if(scores[i]>12 || scores[i]<1)
        {
            cout << "Такой оценки нет! Повторите попытку." << endl;
            goto error;
        }
        ser_bal += scores[i];
    }
    ser_bal /= 5;
    
}
 
/* Выдаем имя */  string klas::get_name()
{
    return name;
}
/* Выдаем фамилию */  string klas::get_famil()
{
    return famil;
}
 
 
/* Выдаем средний бал */  float  klas::get_bal()
{
    return ser_bal;
}
/* Сохраняем данные в файл */ void klas::save()
{
    ofstream fout("persons.txt", ios::app);
 
    // Запись в файл
    fout << klas::get_name() << " "
         << klas::get_famil() << " ";
 
    for(int i=0; i<5; i++)
    {
        fout << scores[i] << " ";
    }
    fout << klas::get_bal()
         << endl;
 
    fout.close();     // Закрываем файл
}
/* Проверка на ошибку ввода */ int klas::exit()
{
    int a;
error:
    cout <<"Хотите выйти?" << endl << "Остатся >> 1 \t Выйти >> 0" << endl;
    cin >> a;
    if (a!=0 && a!=1) 
    {
        cout << "Вы ввели вневерное значение! Повторите попытку." << endl;
        goto error;
    }
    system("cls");
    return a;
}
 
/* main.cpp */
 
  .  .  .
set:
    while(true)
    {   
        klas *Person_1 = new klas();
        
        system("cls");    // Очистка консоли
        delete Person_1;
         
        if(Person_1->exit()==0) 
        {
            goto menu;
        }
    }
  .  .  .
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем, перед чтением, определяете размер данных в файле?
Если размер файла = 0, значит файл пустой и выводить нечего
C++
1
2
3
4
long file_size;
        fin.seekg(0, ios::end);
        file_size = fin.tellg();
        if(file_size == 0) {cout << "Файл пустой! Сначала заполните его!" << endl;}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 10:55     Функция чтения из файла #5
Цитата Сообщение от Darkos Посмотреть сообщение
C++
1
2
fin.seekg(0, ios::end);
file_size = fin.tellg();
В конец файла курсор переместили, а обратно?
Darkos
5 / 5 / 4
Регистрация: 16.05.2014
Сообщений: 82
Завершенные тесты: 1
18.05.2014, 17:42  [ТС]     Функция чтения из файла #6
alsav22, спасибо, получилось.
Не подскажите как можно вывести строку, номер которой вводит пользователь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2014, 22:27     Функция чтения из файла
Еще ссылки по теме:

Программа чтения из файла - C++
Подскажите пожалуйста возможный алгоритм решения задачи: Таблица произвольной структуры в файле (база данных). Колонки таблицы...

Кодировка чтения файла - C++
Здравствуйте, форумчане! Возникла небольшая прроблемка.. Читаю данные из файла: #include &lt;iostream&gt; #include &lt;vector&gt; ...

Ошибка чтения из файла - C++
Народ, помогите понять, почему программа выдает ошибку при чтении из файла Входные данные: 6 2 3 -1 3 5 -2 -5 -1 9 -4 5 -1 -2 -2...

Задача на строки и чтения из файла - C++
Известны названия футбольных команд и результаты проведенных матчей футбольного турнира. Результат каждого матча (счет игры) – это два...

Ошибка чтения из бинарного файла - C++
Вызвано исключение: нарушение доступа для чтения. _Pnext было 0x114999C. Что значит эта ошибка? При чем она вылетает, если...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.05.2014, 22:27     Функция чтения из файла #7
Цитата Сообщение от Darkos Посмотреть сообщение
как можно вывести строку, номер которой вводит пользователь?
В цикле (проверяя n и конец файла), через fin.ignore(100, '\n'), пропустите нужное количество строк, потом читайте нужную.
Yandex
Объявления
18.05.2014, 22:27     Функция чтения из файла
Ответ Создать тему
Опции темы

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