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

Считывание из файла строк с getline() - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
PolarFox
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 32
16.03.2014, 05:59     Считывание из файла строк с getline() #1
Код из интернета, который работает у автора, но не у меня. Ошибка: Call to undefined function 'getline'

Прототип писать не стал, так как он должен быть в библиотеке <string>, usind namespace std тоже не писал, из-за не новой версии C++ Borland (5.02) (и никогда не писал). В чем может быть проблема?


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <fstream>
#include <string>
 
void main(void)
{
 
   string str;
   int k;
 
   ifstream f("C:\\1.txt");
 
   getline(f,str);
 
   cout << str;
 
   f.close();
 
   cin >> k;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 15:01     Считывание из файла строк с getline() #21
Цитата Сообщение от Esecman Посмотреть сообщение
В том то и дело, что подключение директивы string не осуществлено.
Тем самым, код не компилируется.
Дело в том, что в коде нет string, поэтому и подключение <string> нафиг не нужно.

Добавлено через 1 минуту
Цитата Сообщение от Дъячелли Посмотреть сообщение
а как если последние три значения меня int? что в этом случае происходит?
getline() - это для строк. Для int: f >> .

Добавлено через 2 минуты
Вот эта хрень зачем?
C++
1
using namespace System;
Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
while(!f.eof()){
            for(unsigned int i=0;i<count;i++){  
                f.getline(mob[i].name, SIZE);
                f.getline(mob[i].firm, SIZE);
                f.getline(mob[i].st, SIZE);
                f >> mob[i].battery;
                f >> mob[i].bt_work;
                f >> mob[i].bt_stand;
            };
        };
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,587
Записей в блоге: 17
08.06.2014, 15:01     Считывание из файла строк с getline() #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Дело в том, что в коде нет string, поэтому и подключение <string> нафиг не нужно.
Еще раз код посмотри и не сбивай народ с толку.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 15:02     Считывание из файла строк с getline() #23
Цитата Сообщение от Avazart Посмотреть сообщение
Еще раз код посмотри и не сбивай народ с толку.
Код в 12 посте, смотри.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,587
Записей в блоге: 17
08.06.2014, 15:04     Считывание из файла строк с getline() #24
C++
1
2
3
4
5
6
7
8
struct tel{
         char *name, //имя телефона 
         *firm, //производитель
         *st; //стандарт связи
    unsigned int battery,
                 bt_stand,
                 bt_work;
    };
Можно с легкостью заменить char* на std::string и читать с помощью getline() (та что метод а не ф-ция)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 15:06     Считывание из файла строк с getline() #25
Цитата Сообщение от Avazart Посмотреть сообщение
Можно с легкостью заменить char* на std::string
И переписать весь код...
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,587
Записей в блоге: 17
08.06.2014, 15:07     Считывание из файла строк с getline() #26
Только у меня подозрения что, если учебная задача то предполагалась реализация через двоичные файлы и не текстовые.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 15:08     Считывание из файла строк с getline() #27
Цитата Сообщение от Дъячелли Посмотреть сообщение
вот я не хотела вот SIZE использовать
Если не хотели, то зачем, вообще, в коде использовали? Или: тут хочу, а тут не хочу?
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,587
Записей в блоге: 17
08.06.2014, 15:08     Считывание из файла строк с getline() #28
Цитата Сообщение от alsav22 Посмотреть сообщение
Если не хотели, то зачем, вообще, в коде использовали? Или: тут хочу, а тут не хочу?
Для того что бы :
Цитата Сообщение от alsav22 Посмотреть сообщение
переписать весь код...
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
08.06.2014, 16:16     Считывание из файла строк с getline() #29
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// work_7.cpp: главный файл проекта.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string>
#include <iostream>
#include <fstream>
#include <windows.h>
 
#define SIZE 15
#define flashka "I:\noobs.txt"
 
using namespace System;
using namespace std;
 
class p_1{
public:
    char *name;
    unsigned int count;
    struct tel{
         char *name, //имя телефона 
         *firm, //производитель
         *st; //стандарт связи
    unsigned int battery,
                 bt_stand,
                 bt_work;
    };
    tel *mob;
    
    p_1(void){
        cout << "Количество телефонов " ;
        cin >> count;
        cout << endl;
        mob = new tel[count];
        for(unsigned int i=0;i<count;i++){
            system("cls");
            
            cout << "Данные по " << i+1 << " телефону:" << endl << endl;
            cout << "Название              ";
            mob[i].name = new char[SIZE];
            cin >> mob[i].name;
            cout << endl;
            cout << "Производитель         ";
            mob[i].firm = new char[SIZE];
            cin >> mob[i].firm;
            cout << endl;
            cout << "Стандарт связи        ";
            mob[i].st = new char[SIZE];
            cin >> mob[i].st;
            cout << endl;
            cout << "Заряд батареи         ";
            cin >> mob[i].battery;
            cout << endl;
            cout << "Потребление в работе  ";
            cin >> mob[i].bt_work;
            cout << endl;
            cout << "Потребление в ожид.   ";
            cin >> mob[i].bt_stand;
            cout << endl;
        }
    };
    ~p_1(void){ delete [] mob;};
    friend int run(p_1 *p);
    friend int run_1(p_1 *p);
    //----------------->>>>>>>>>>>
    void write(void){
        if(mob!=NULL){
            ofstream f;
            f.open(flashka);
            cout << "Идет запись в файл" << endl;
            for(unsigned int i=0;i<count;i++){
                f << mob[i].name << endl;
                f << mob[i].firm << endl;
                f << mob[i].st << endl;
                f << mob[i].battery << endl;
                f << mob[i].bt_work << endl;
                f << mob[i].bt_stand << endl;
            };
            f.close();
            delete [] mob;
            cout << "Запись в файл, упсешно" << endl;
        }else{ cout<< "Записей не существует, прежде чем записывать в файл, создайте запись для телефона" << endl; }
    }
    //----------------->>>>>>>>>>>
    void read(void){
        char* buf = "" ;
        ifstream f;
        f.open(flashka);
        cout << "Идет чтение из файла" << endl;
        while(!f.eof()){
            for(unsigned int i=0;i<count;i++){  
                f.getline(mob[i].name, SIZE);
                f.getline(mob[i].firm, SIZE);
                f.getline(mob[i].st, SIZE);
                f.getline(buf, SIZE);
                mob[i].battery = (int)buf;
                f.getline(buf,SIZE);
                mob[i].bt_work = (int)buf;
                f.getline(buf, SIZE);
                mob[i].bt_stand = (int)buf;
            };
        };
            f.close();
            cout << "Чтение из файла, упсешно" << endl;
    }
};
class p_2{//абстрактный класс
public:
    virtual void print() = 0;
};
 
class p_3:public p_1, public p_2{
public:
    void print(void){
    if(mob!=NULL){
        for(unsigned int i=0;i<count;i++){
            system("cls");
            cout << "Данные по " << i+1 << " телефону:" << endl << endl;
            cout << "Название              " << mob[i].name << endl;
            cout << "Производитель         " << mob[i].firm << endl;
            cout << "Стандарт связи        " << mob[i].st << endl;
            cout << "Заряд батареи         " << mob[i].battery << endl;
            cout << "Потребление в работе  " << mob[i].bt_work << endl;
            cout << "Потребление в ожид.   " <<mob[i].bt_stand <<  endl;
        }
    }else{cout << "Записи не существует";};
    };
};
 
int main()
{
    SetConsoleCP(1251);// меняет кодировку консоли
    SetConsoleOutputCP(1251);
    
    p_3 p;
    p.write();
    _getch();
    system("cls");
    p.read();
    p.print();
    return 0;
}
при чтении из файла теперь выводит ошибку чтения или записи в защищенную память =(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2014, 17:00     Считывание из файла строк с getline()
Еще ссылки по теме:

C++ Считывание строк из файла
C++ Не происходит считывание (getline) из файла. Исправить код
Считывание из файла массива строк C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 17:00     Считывание из файла строк с getline() #30
Цитата Сообщение от Дъячелли Посмотреть сообщение
при чтении из файла теперь выводит ошибку чтения или записи в защищенную память =(
А зачем сделали не так, как я предложил (21 пост)?
Yandex
Объявления
08.06.2014, 17:00     Считывание из файла строк с getline()
Ответ Создать тему
Опции темы

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