Форум программистов, компьютерный форум CyberForum.ru

фейл при чтении из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить таблицу ступенчатой функции http://www.cyberforum.ru/cpp-beginners/thread1030491.html
Дошел до ступенчатой функции, не могу понять как делать,помогите y=(tgx*sqrt(p^2-x^2))/(ln(p+2)) , 0<=x<1;dx=0.2; y=(lg(x+1)*arctg(p))/(sqrt(x^2+4x-7))+(2p/x), 1<=x<2;dx=0.5;0<=p<=5;dp=0.25
C++ Сумма элементов правее побочной диагонали, где строка начинается с отрицательного элемента Есть квадратная матрица. Нужно посчитать сумма элементов правее побочной диагонали, где строка начинается с отрицательного элемента sum = 0; cout<<"Вычисление суммы элементов, расположенных правее побочной диагонали в строках, начинающихся с отрицательного элемента"<<endl; for(i = 0; i < s; i++) for(j = 0; j < s; j++){ //if(mas < 0) if((s - j - 1) < i){ sum = sum + mas;... http://www.cyberforum.ru/cpp-beginners/thread1030486.html
Программа с затруднительной концовкой C++
Привет всем. У меня Программа нуждающаяся в помощи. Нужна помощь с задачей. Вот условие: Есть информационный массив f, в котором данные о книгах. (фамилия автора, название и год печати). б) определить есть книга с названием «Информатика». Если есть, то выдать фамилия автора и год печати. Если таких книг несколько, то выдать все данные по этим книгам. У меня не получается реализовать эту часть...
C++ вложенность прямоугольников
bool Intersects(Rect Obj1, Rect Obj2) { int x1 = Obj1.ItsLeftUpperGetX(); int y1 = Obj1.ItsLeftUpperGetY(); int x2 = Obj1.ItsRightLowerGetX(); int y2 = Obj1.ItsRightLowerGetY(); int a1 = Obj2.ItsLeftUpperGetX();
C++ разработать программу, которая будет использовать структуру в С http://www.cyberforum.ru/cpp-beginners/thread1030459.html
1 . создать программу, которая будет использовать структуру human с элементами surname , name , age . Разработать создания и вывода на экран информации из структуры 2 . создать программу, которая будет использовать структуру zapchast с элементами name , size , price . Разработать создания и вывода на экран информации из структуры 3 . создать программу, которая будет использовать структуру car с...
C++ Потоки и критическая секция! Почему потоки проходят 14 раз, а не 10, как указано в MaxCount?????? Помогите с ответом пожалуйста! Написать программу, главный поток которой запускает несколько дополнительных потоков. Реализовать критическую секцию кода, которую все потоки проходят. Использовать функции CreateThread, InitializeCriticalSection, DeleteCriticalSection, EnterCriticalSection, LeaveCriticalSection. Как минимум, в... подробнее

Показать сообщение отдельно
ОлександрТНТУ
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 4
06.12.2013, 02:09     фейл при чтении из файла
Вот абсолютно работоспособный код, где чтение и запись выполняются непосредственно в main.
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
class Goods{
protected:
    string Name;
public:
    Goods(){};
    void set(){
        cout << "Enter Name : ";
        getline(cin, Name);
    }
    void Show(){
        cout << "Name :  " << Name << endl;
    }
};
 
void main(){
    while (1){
        Goods G;
        fstream f;
        cout << "------------------------------------\n";
 
        //запись в файл
        G.set();
        f.open("Goods.txt", ios::app | ios::out | ios::binary);
        f.write(reinterpret_cast<char*>(&G), sizeof(Goods));
        f.close();
 
        //чтение из файла
        int i = 1;
        f.seekg(0);
        f.open("Goods.txt", ios::in | ios::binary);
        f.read(reinterpret_cast<char*>(&G), sizeof(Goods));
        while (!f.eof()){
            cout << "Goods # " << i++ << " : ";
            G.Show();
            f.read(reinterpret_cast<char*>(&G), sizeof(Goods));
        }
        f.close();
    }
}
Но когда я хочу произвести чтения в отдельной функции как здесь, программа прочитав все обьекты вылетает с ошибкой.
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
class Goods{
protected:
    string Name;
public:
    Goods(){};
    void set(){
        cout << "Enter Name : ";
        getline(cin, Name);
    }
    void Show(){
        cout << "Name :  " << Name << endl;
    }
};
 
void ReadFromFile(){
    Goods G;
    fstream f;
 
    cout << "------------------------------------\n";
    int i = 1;
    f.seekg(0);
    f.open("Goods.txt", ios::in | ios::binary);
    f.read(reinterpret_cast<char*>(&G), sizeof(Goods));
    while (!f.eof()){
        cout << "Goods # " << i++ << " : ";
        G.Show();
        f.read(reinterpret_cast<char*>(&G), sizeof(Goods));
    }
    f.close();
}
 
void main(){
    while (1){
        Goods G;
        fstream f;
 
        //запись в файл
        G.set();
        f.open("Goods.txt", ios::app | ios::out | ios::binary);
        f.write(reinterpret_cast<char*>(&G), sizeof(Goods));
        f.close();
 
        //чтение из файла через функцию
        ReadFromFile();
    }
}
странное еще ​​то, что ошибка возникает только тогда, когда поле класса не является элементарным типом данных. То есть если бы поле Name было к примеру интовым, программа работала бы нормально.
Подскажите пожалуйста как исправить это, но необходимо чтобы чтение происходило именно в отдельной функции, спасибо.
Миниатюры
фейл при чтении из файла  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru