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

как заполнить класс из файла? - C++

Восстановить пароль Регистрация
 
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
25.09.2012, 17:11     как заполнить класс из файла? #1
доброго времени суток! начал пытать лабу по безопасности! класс должен считать все данные из файла и заполнится. я для этого использую конструктор по умолчанию. но уменя высвечивает всего по одному символу из строки, и то неверных! помогите

содержимое файла:
login password acces
tiva qwerty 1
asdf zxcv 2
... и тд

у меня не считывается строка вообще. я пока не знаю как сделать, чтоб считывалось сразу в нужные( логин в login, ур. доступа в access и пароль в pwd), но с этим я разберусь, у меня вообще пока ничего не считывается!! помогите!!
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
#include <iostream>
using namespace std;
#include <locale>
#include <fstream>
#include <string>
#define endline cout<<endl
class ATable
{
public:
    char *login;
    int access;
    static int count;
 
    ATable()
    {
        ifstream ifst("test.txt");
        while(!ifst.eof()) if(ifst.get()=='\n') count++; //считает сколько строк в файле
        login=new char [count];
        while(!ifst.eof())
        {
            for (int i=0; i<count; i++)
                ifst.getline(&login[i],sizeof(login[i]));
        }
    }
    void output();
 
};
void ATable::output()
{
    for(int i=0; i<count; i++)
    {
        cout<<login[i];
        endline;
    }
}
int ATable::count=0;
 
int main(void)
{
    setlocale(0,"");
    ATable mytab;
    cout<<mytab.count;
    cout<<"User list:\n";
    mytab.output();
 
 
 
    endline;    
}

это вариант, когда я пытался заполнить данные класса и выделить память под них прямо в конструкторе!

а 2ой вариант(когда без конструктора, попроще), все равно не считывает! пишет expression: string supscript out of range при запуске.

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
#include <iostream>
using namespace std;
#include <locale>
#include <fstream>
#include <string>
#define endline cout<<endl
class ATable
{
public:
    string login;
    string pwd;
    int access;
    static int count;
 
    void output();
};
void ATable::output()
{
    cout<<login;
    endline;
}
int ATable::count=1;
 
int main(void)
{
    setlocale(0,"");
    int i;
    ifstream ifst("test.txt");
    ATable *mytab;
    while(!ifst.eof()) if(ifst.get()=='\n') mytab->count++; //считает сколько строк в файле
    cout<<mytab->count<<endl;
    mytab=new ATable [mytab->count];
    for (i=0; i<mytab->count; i++)
        ifst.getline(&(mytab->login[i]), 10, ' ');
 
 
 
 
    cout<<"User list:\n";
    //mytab->output();
 
 
    
 
    endline;    
}
помогите хоть с одним вариантом!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 17:11     как заполнить класс из файла?
Посмотрите здесь:

Как заполнить массив элементов класса из текстового файла C++
C++ Как скажем из главного файла C++ увидеть класс, созданный в отдельном файле?
C++ Как включить класс из внешнего файла в пространство имён?
C++ Заполнить контейнер map и vector данными из файла
Как преобразовать указатель на класс к указателю на асбтрактный класс? C++
Заполнить структуру данными из бинарного файла C++
C++ Создать стэк и заполнить его из txt файла
Как заполнить класс Автосалон при запуске программы? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 17:32     как заполнить класс из файла? #2
while(!ifst.eof()) if(ifst.get()=='\n') count++; //считает сколько строк в файле

Просто пишите в начале файла, сколько строк нужно считать.

Или возвращайтесь обратно в начало файла после подсчета строк. Просто после подсчета строк вы находитесь уже в конце файла, все данные остались позади
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2012, 18:04     как заполнить класс из файла? #3
Если по быстрому, то, как вариант:
Код
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
#include <iostream>
#include <locale>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
#define endline cout<<endl
 
class ATable
{
public:
    vector <string> login;
    vector <string>  password;
    vector <int> access;
    static int count;
 
    ATable()
    {
        ifstream ifst("test.txt");
        
        while(!ifst.eof())
        {
            string templog;
            string temppas;
            int tempacc;
            
            ifst >> templog >> temppas >> tempacc;
            
            login.push_back(templog);
            password.push_back(temppas);
            access.push_back(tempacc);
            
            count++; 
        }
    }
    
    void output();
 
};
 
void ATable::output()
{
    for(int i = 0; i < count; i++)
    {
        cout << login[i] << " " << password[i] << " " << access[i];
        endline;
    }
}
 
int ATable::count=0;
 
//................................................................ 
 
int main(void)
{
    setlocale(0,"");
    ATable mytab;
    cout << mytab.count << " ";
    cout << "User list:\n";
    mytab.output();
 
    endline;
    cin.get();    
}

В файле:
tiva qwerty 1
asdf zxcv 2
Yandex
Объявления
25.09.2012, 18:04     как заполнить класс из файла?
Ответ Создать тему
Опции темы

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