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

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

23.10.2009, 22:39. Показов 12710. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru