Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429

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

23.10.2009, 22:39. Показов 12749. Ответов 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
Ответ Создать тему
Новые блоги и статьи
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й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru