Форум программистов, компьютерный форум 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;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fene4ka_
84 / 84 / 16
Регистрация: 24.01.2014
Сообщений: 1,142
16.03.2014, 06:02     Считывание из файла строк с getline() #2
PolarFox, в vs все работает, попробуйте стереть строчку и написать ручками
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
16.03.2014, 06:12     Считывание из файла строк с getline() #3
Цитата Сообщение от PolarFox Посмотреть сообщение
Ошибка: Call to undefined function 'getline'
your system doesn't support POSIX 2008.1. Fuck off.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2014, 06:36     Считывание из файла строк с getline() #4
Цитата Сообщение от PolarFox Посмотреть сообщение
из-за не новой версии C++ Borland (5.02)
Не мучайтесь, смените среду.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
16.03.2014, 06:40     Считывание из файла строк с getline() #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Не мучайтесь, смените среду
углубляясь ... сменит не только "среду", а изначально операционнюю систему, редактор, дебаггер, мозг, тело, интересы.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
16.03.2014, 10:35     Считывание из файла строк с getline() #6
Цитата Сообщение от PolarFox Посмотреть сообщение
#include <iostream.h>
#include <fstream>
Это какая-то смесь разных сред.
Думаю, имелось ввиду
C++
1
2
#include <iostream> 
#include <fstream>
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
16.03.2014, 10:57     Считывание из файла строк с getline() #7
а разве будет полное чтение без цикла?
нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
#include <fstream>
 
int main() {
ifstream f;
f.open("filename.txt");
while(!f.eof()) {
string str;
getline(f, str);
cout << str << endl;
}
system("pause");
return 0;
}
---------
Вот так лучше.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2014, 11:18     Считывание из файла строк с getline() #8
Цитата Сообщение от Esecman Посмотреть сообщение
а разве будет полное чтение без цикла?
Тут не до цикла, тема другая: не компилируется.
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
08.06.2014, 14:06     Считывание из файла строк с getline() #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
#define flashka "I:\\noobs.txt"
 
void read(void){
        ifstream f;
        f.open(flashka);
        cout << "Идет чтение из файла" << endl;
        while(!f.eof()){
            for(unsigned int i=0;i<count;i++){  
                getline(f,mob[i].name);
                getline(f, mob[i].firm);
                getline(f, mob[i].st);
                getline(f, mob[i].battery);
                getline(f, mob[i].bt_work);
                getline(f, mob[i].bt_stand);
            };
        };
            f.close();
            cout << "Чтение из файла, упсешно" << endl;
    }
Пишет, что getline: идентификатор не найден, не поняла как с этим бороться, если справились расскажите vs 10 express
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
08.06.2014, 14:15     Считывание из файла строк с getline() #10
using namespace std либо ко всем идентификаторам из iostream и fstream добавьте std:: .

Добавлено через 2 минуты
Цитата Сообщение от PolarFox Посмотреть сообщение
usind namespace std....#include <iostream.h>
<iostream.h> устаревший заголовок, и если он есть в инклудах, то для него using namespace std не нужен, а для <iostream> нужен.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
08.06.2014, 14:17     Считывание из файла строк с getline() #11
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Во-первых, <iostream.h> устаревший заголовок, и если он есть в инклудах, то для него using namespace std не нужен, а для <iostream> нужен.
Kerry_Jr, Так и компилятор старый.

Так что пусть пробует со "старыми" заголовками и без std:: :

C++
1
2
3
#include <string.h>
#include <iostream.h>
#include <fstream.h>
http://www.cplusplus.com/reference/s...tring/getline/
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
08.06.2014, 14:35     Считывание из файла строк с getline() #12
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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#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 << "name" << i+1 << ":" << mob[i].name << endl;
                f << "firm" << i+1 << ":" << mob[i].firm << endl;
                f << "st" << i+1 << ":" << mob[i].st << endl;
                f << "bttery" << i+1 << ":" << mob[i].battery << endl;
                f << "bt_work" << i+1 << ":" << mob[i].bt_work << endl;
                f << "bt_stand" << i+1 << ":" << mob[i].bt_stand << endl;
            };
            f.close();
            delete [] mob;
            cout << "Запись в файл, упсешно" << endl;
        }else{ cout<< "Записей не существует, прежде чем записывать в файл, создайте запись для телефона" << endl; }
    }
    //----------------->>>>>>>>>>>
    void read(void){
        ifstream f;
        f.open(flashka);
        cout << "Идет чтение из файла" << endl;
        while(!f.eof()){
            for(unsigned int i=0;i<count;i++){  
                getline(f,mob[i].name);
                getline(f, mob[i].firm);
                getline(f, mob[i].st);
                getline(f, mob[i].battery);
                getline(f, mob[i].bt_work);
                getline(f, mob[i].bt_stand);
            };
        };
            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();
    if(p.mob==NULL) cout << "Переменная mob очищена";
    _getch();
    p.print();
    _getch();
    p.read();
    p.print();
    _getch();
    return 0;
}
полностью программа
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
08.06.2014, 14:40     Считывание из файла строк с getline() #13
C++
1
#include <string>
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
08.06.2014, 14:42     Считывание из файла строк с getline() #14
все остальное нормально работает пространством имен
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 14:42     Считывание из файла строк с getline() #15
C++
1
2
3
4
using namespace std;
...
f.getline(mob[i].name, SIZE);
//и т.д.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
08.06.2014, 14:44     Считывание из файла строк с getline() #16
для getline в Visual Studio нужно подключение
C++
1
<string>
Конечно же,
C++
1
using namespace std;
обязателен, или придется использовать
C++
1
std::getline();
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
08.06.2014, 14:45     Считывание из файла строк с getline() #17
work_7.cpp(91): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для "std::basic_istream<_Elem,_Traits> &" из "std::ifstream"

на каждую строку getline с библиотекой стринг
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.06.2014, 14:45     Считывание из файла строк с getline() #18
Цитата Сообщение от Esecman Посмотреть сообщение
для getline в Visual Studio нужно подключение
<string>
Где в коде string?
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
08.06.2014, 14:47     Считывание из файла строк с getline() #19
В том то и дело, что подключение директивы string не осуществлено.
Тем самым, код не компилируется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2014, 14:47     Считывание из файла строк с getline()
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Дъячелли
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 58
08.06.2014, 14:47     Считывание из файла строк с getline() #20
вот я не хотела вот SIZE использовать ^__^, а как если последние три значения меня int? что в этом случае происходит?
Yandex
Объявления
08.06.2014, 14:47     Считывание из файла строк с getline()
Ответ Создать тему
Опции темы

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