Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449

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

25.09.2012, 17:11. Показов 4853. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток! начал пытать лабу по безопасности! класс должен считать все данные из файла и заполнится. я для этого использую конструктор по умолчанию. но уменя высвечивает всего по одному символу из строки, и то неверных! помогите

содержимое файла:
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;    
}
помогите хоть с одним вариантом!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2012, 17:11
Ответы с готовыми решениями:

Как заполнить класс Автосалон при запуске программы?
Здравствуйте ! Подскажите пожалуйста, как можно заполнить Автосалон машинами автоматом, чтобы не вбивать информацию руками ? Можете...

Как заполнить массив комплексными числами, не используя стандартный класс std::complex<double>?
Короче, дана структура. Как заполнить массив комплексными числами, не используя стандартный класс std::complex&lt;double&gt;. struct...

Как заполнить класс в классе
есть два класа a{ int qqq; int www; List&lt;b&gt; eee; } b{ int zzz; int xxx;

2
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 17:32
while(!ifst.eof()) if(ifst.get()=='\n') count++; //считает сколько строк в файле

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

Или возвращайтесь обратно в начало файла после подсчета строк. Просто после подсчета строк вы находитесь уже в конце файла, все данные остались позади
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2012, 18:04
Если по быстрому, то, как вариант:
Код
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
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2012, 18:04
Помогаю со студенческими работами здесь

Несколько полей в классе являються массивами, как заполнить класс?
Здравствуйте уважаемые форумчане. Очень очень тупой вопрос. Но меня закоротило. Есть список классовpublic class Session { public...

Как заполнить GridView из файла
Есть текстовый файл. Загружаю его в директорию сайт\Files, оттуда читаю построчно и вытаскиваю только необходимые данные. Извлеченными...

Класс перехватчик, заполнить пустые ячейки грида строкой (при повторном нажатии - очистить как было)
Задание: при нажатии клавиши F11 все пустые ячейки Cells заполняются строкой из трех символов ###, а при повторном нажатии F11 эти ячейки...

Как заполнить DataGrid из файла XML?
Мужики, перерыл что смог найти но так и не понял что нужно скормить DataGrid чтобы он отобразил мне инфу из файла xml. Вот код которым я...

Как заполнить заголовок звукового файла?
public class AudioRecord { byte header = new byte; byte channels ; void run() { channels = 1;


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru