Дарова народ,есть вопрос.
Язык - С++
У меня есть текстовый файл в котором содержится информация допустим о студентах. ФИО,предметы и оценки - всё записываеться в ряд для одного студента и через пробел .Пример:
Тимошенко Валерий Петрович Физика 5 3 4
Мормуль Дмитрий Васильевич Математика 4 4 4
.....
Как считать с этого файла данные и занести в структуру
Struct Student{... ... ...}
и потом нужно будет обращаться к этому массиву векторов и выводить некоторые данные на экран.
Так как считать этот файлик?
Ответы
Ответ дал:
0
Когда заранее знаешь порядок становится намного легче.
Вот к примеру простая структура.
struct stud
{
string name;
string surname;
string second_name;
string lesson;
int mark[3];
};
Далее мы с помощью библиотеки fstream создаём экземпляр класса "ifstream" и соединяем его с файлом.
Пример: ifstream fin("myfile.txt);
Потом в цикле считываем инфу с открытого файла.
Вот пример для моей структуры.
student m; //создал переменную с типом моей структуры.
while(!fin.eof())
{
fin >> m.surname; //считываю фамилию в структуру
fin >> m.name;
fin >> m.second_name;
fin >> lesson;
//а теперь оценки в инт, это уже будет сделать чуть сложнее.
//для этого считываем инфу в чаровый буфер и через atoi переводим
fin >> temp;
m.mark[0]=atoi(temp);
fin >> temp;
m.mark[1]=atoi(temp);
fin >> temp;
m.mark[2]=atoi(temp);
}
Что-то на подобии этого, я считывал инфу в свою структуру, но вы просто считывайте её в ваш вектор и всё.
Обязательно в условии цикла поставить "!название вашего объекта.eof()".
Ну и в конце закрыть файл методом .close();
Прикрепил скрин с маленьким примером, ну и кинул как это работает с массивами. (с векторами это тоже отлично работает, просто мне лень)
Вот к примеру простая структура.
struct stud
{
string name;
string surname;
string second_name;
string lesson;
int mark[3];
};
Далее мы с помощью библиотеки fstream создаём экземпляр класса "ifstream" и соединяем его с файлом.
Пример: ifstream fin("myfile.txt);
Потом в цикле считываем инфу с открытого файла.
Вот пример для моей структуры.
student m; //создал переменную с типом моей структуры.
while(!fin.eof())
{
fin >> m.surname; //считываю фамилию в структуру
fin >> m.name;
fin >> m.second_name;
fin >> lesson;
//а теперь оценки в инт, это уже будет сделать чуть сложнее.
//для этого считываем инфу в чаровый буфер и через atoi переводим
fin >> temp;
m.mark[0]=atoi(temp);
fin >> temp;
m.mark[1]=atoi(temp);
fin >> temp;
m.mark[2]=atoi(temp);
}
Что-то на подобии этого, я считывал инфу в свою структуру, но вы просто считывайте её в ваш вектор и всё.
Обязательно в условии цикла поставить "!название вашего объекта.eof()".
Ну и в конце закрыть файл методом .close();
Прикрепил скрин с маленьким примером, ну и кинул как это работает с массивами. (с векторами это тоже отлично работает, просто мне лень)
Приложения:
![](https://st.uroker.com/files/579/5791bdd1d2450b54fa0710699b5bca49.png)
![](https://st.uroker.com/files/002/00289254f2d970c2a55d974e1559390e.png)
Ответ дал:
0
Это классно что обычным массивом сделал но с ним работать я более менее умею а вот с векторами есть некоторые проблемы)
Ответ дал:
0
А в чём проблема? Копируем инфу в созданную нами переменную с типом твоей структуры, а потом эту структуру пуш бэком добавляешь в вектор.
Ответ дал:
0
string temp;
while(fin.eof())
{
fin >> f.name;
fin >> f.surname;
my.push_back(f);
}
while(fin.eof())
{
fin >> f.name;
fin >> f.surname;
my.push_back(f);
}
Ответ дал:
0
Добавь в телеге ) +380953449754 Есть один вопрос
Вас заинтересует
1 год назад
2 года назад
2 года назад
8 лет назад
8 лет назад