141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429

fstream не читает строки из файла!

23.10.2009, 22:39. Показов 12759. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня Visual Studio 2008 использую язык С++

У меня есть определенный класс который мне нужно записать. (Класс кстати TStudent - листинг класса в конце)
Вот код записи в файл:
C++
1
2
3
4
5
6
7
8
9
bool TStudent::_savegridtofile(TStudent student)
{
    ofstream file;
    file.open("student.arc", ios::binary | ios::ate);
    file.seekp(0);
    file.write((char *) &student, sizeof(TStudent));
    file.close();
    return true;
}
И жизнь вроде кажется шоколадом потому что в файл что-то пишется.
И жить бы мне да радоваться - НО!
Тут возникает потребность считать из файла, читаю я значит читаю класс, а он мне фигу
Вот код чтения из файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
TStudent TStudent::_loadfiletogrid(int rec_num)
{
    TStudent student;
    
    fstream file("student.arc", ios::in | ios::out | ios::binary);
    if (file == NULL) {return student;}
    file.seekp(0);
    file.getline((char *)&student, sizeof(TStudent));
    //file.read((char *) &student, sizeof(TStudent));
    file.close();
 
    return student;
}
Объясните пожалуйста чего за беда такая и как с ней справиться?
Листинг класса:
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
#pragma once
#include "string"
using namespace std;
 
 
class TPeople {
public:
    int num;
    string name;
    string fam;
    string otch;
    string date_b;
    string sex;
    string family;
 
//  TPeople();      //  конструктор
//  ~TPeople();     //  деструктор
};
 
class TStudent: public TPeople {
public:
    //TStudent(); //~TStudent();
 
    int course;
    string date_in;
    string student_num;
 
    bool _savegridtofile(TStudent student);
    TStudent _loadfiletogrid(int i);
};
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2009, 22:39
Ответы с готовыми решениями:

Консоль не читает строки из текстового файла
Добрый день! Консолька принимает на вход вопрос и ищет из текстового файла ответ, путем перебора ПРоблема в том, что при запуске -...

Написать программу, которая читает первые три символа из каждой строки текстового файла
Написать программу, которая читает первые три символа из каждой строки текстового файла stroki.txt

Написать программу, которая читает строки из файла в массив строк, и выводит их на экран только названия, состоящие из нескольких слов
помогит плиз срочно надо а я вообще не знаю как их решать заранее спасибо 1)В файле хранятся названия фирм. Каждая строка запись об...

23
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
24.10.2009, 18:48  [ТС]
Студворк — интернет-сервис помощи студентам
Новый прикол в общем использую не много иную системы чтения записи я смог прочитать только часть структуры после записи ее в файл...фактически считывает пол (student.Info.sex) и семейное положение (studen.family)

код записи в файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool TStudent::_savegridtofile(TStudent student) {
    
/*  ofstream file;
 
    file.open("student.arc", ios::binary | ios::ate);
    file.seekp(0);
    file.write((char *) &student.Info, sizeof(TStudent::Info));
    file.write((char *) &student.StudentInfo, sizeof(TStudent::StudentInfo));
    file.close();*/
 
    FILE* file;
    fopen_s(&file, "student.arc", "w+b");
    fwrite(&student.Info, sizeof(student.Info), 1, file);
    fwrite(&student.StudentInfo, sizeof(student.StudentInfo), 1, file);
    fclose(file);
 
    return true;
}
код чтения из файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TStudent TStudent::_loadfiletogrid(int rec_num) {
    
    TStudent student;
    
/*  fstream file("student.arc", fstream::in | fstream::out | fstream::binary);
    if (file == NULL) {return student;}
    file.seekg(0);
//  file.getline((char *)&student.Info, sizeof(TStudent::Info));
    file.read((char *)&student.Info, sizeof(TStudent::Info));
    file.read((char *)&student.StudentInfo, sizeof(TStudent::StudentInfo));
    file.close();*/
 
    FILE* file;
    fopen_s(&file, "student.arc", "r+b");
    fseek(file, 0, SEEK_SET);
    fread(&student.Info, sizeof(student.Info),1, file);
    fread(&student.StudentInfo, sizeof(student.StudentInfo),1, file);
    fclose(file);
 
 
    return student;
}
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
24.10.2009, 22:13  [ТС]
Ну что...хоть кто-нибудь что-нибудь посоветует?
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
25.10.2009, 13:11
Например, можно что-то типа
Code
1
2
file << someString << '\0'; // write
getline(file, someString, 0); // read
0
0 / 0 / 0
Регистрация: 27.09.2009
Сообщений: 8
15.02.2010, 22:47
Цитата Сообщение от mibin Посмотреть сообщение
Ну что...хоть кто-нибудь что-нибудь посоветует?
у меня позожая проблемка... я сначала ввожу данные, потом записываю их в файл с помощью ф-ии:

C++
1
2
3
4
5
6
7
8
9
10
11
int WindowType :: fileReadWind(WindowType *t, int count)
{
    ofstream fout(nameOfFile, ios_base :: out | ios_base :: trunc | ios_base :: binary);
    for (int i=0; i < count; i++)
    {
        fout.write( (char *) (&t[i]), sizeof(WindowType));
        cout << "3anucy}O " << i <<endl;
    }
    fout.close();    
return 0;
}
потом читаю :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int WindowType :: fileOutWind(WindowType *win, int numbOfOut ,int modef)
{
    
    ifstream fin (nameOfFile, ios_base :: in | ios_base :: binary);
    if (!fin)
    {
        cerr << "Error of open file - " << nameOfFile << endl;
        exit(1);    
    }
    int numb = countOfRecords(win, fin);
    int i=0;
    
    for (; i < numb ; i++)
    {
         fin.read( (char *) (&win[i]), sizeof(WindowType));
             cout << win[i].name << " " << win[i].type << " " << win[i].center_x << "/" << win[i].center_y << win[i].height << "*" << win[i].weigth << "\n";
        }
fin.close();    
return 0;
}
но у меня выводится постоянно на 1 елемент больше, заполненный конструктором по умолчанию
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2010, 22:47

Создание файла fstream
Добрый день! Как создать документ с расширением .txt и названием, который введет пользователь. Т.е. есть переменная, которую заполняет...

fstream, создание файла
Привет всем, не могу справиться с проблемой. fstream file(FILE,ios::in|ios::out|ios::binary); файл не создается, но если создать...

Fstream - чтение из файла
подскажите начинающему программисту как читать файл целиком.. например последовательность чисел

Чтение файла через fstream
прочитать из файла матрицу и записать в новый файл её минимальный элемент в первой строке задана размерность матрицы файл: 10 8 ...

Запись в середину файла - fstream
Как можно при помощи fstream (хотелось бы именно им, потому что он умеет и читать, и писать) записать что-либо в середину файла (или куда...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru