Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228

Ошибка при открытые файла

14.12.2013, 00:57. Показов 2285. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка при открытые файла. В файл запысывает нормально. Даже читает то что там есть(несколько обьектов) но после того как прочитает последний обьект, то ошибка, хз почему. Надо записать и прочитать обьекты класса Parts. В классе написал методы записи и чтения самы себя(взял с Лафоре). В autoRepair есть методы saveToFileParts и openFromFileParts. В проекте уже есть файлик который надо открыть(в нем два обьекта). Помогите мне пожалуста с етим, надо сдавать курсовую скоро, и только вот это не работает(
Вложения
Тип файла: 7z Kursak.7z (5.94 Мб, 9 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2013, 00:57
Ответы с готовыми решениями:

При отправке файла при помощи TFTP в логе появляется запись: "Синтаксическая ошибка в имени файла"
Здравствуйте! Использую такую команду: >tftp 192.x.x.150 get C:\scan\file_555.txt 192.x.x.68 Хочу с 150-го компа перекинуть файлик на...

При открытии Opera, пропадают открытые закладки
Доброе время суток, кто-то может объяснить новую «фишку» Opera 46.0: за последние примерно 19 дней, уже второй раз пропадают все открытые...

При "пробуждении" ноутбук загружается, как при обычном включении и все открытые до сна вкладки теряются
Здравствуйте! На ноутбуке установлена Win 8.1. При нажатии кнопки сна, компьютер переходит в спящий режим нормально, но при...

28
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 01:40
Студворк — интернет-сервис помощи студентам
Для примера:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
using namespace std;
 
class A
{
    
public:
    string a;
    string b;
    string c;
    int n;
    int m;
    
    friend ostream& operator<<(ostream& out, const A& obj) 
    {
        out << obj.a << endl;
        out << obj.b << endl;
        out << obj.c << endl;
        out << obj.n << endl;
        out << obj.m << endl;
        
        return out;
    }
 
    friend ifstream& operator>>(ifstream& fin, A& obj)
    {
        getline(fin, obj.a);
        getline(fin, obj.b);
        getline(fin, obj.c);
        fin >> obj.n;
        fin >> obj.m;
        fin.ignore(1);
        
        return fin;
    }
};
 
int main()
{
    const int N = 10;
    A arr[N];
    vector <A> vec;
    for (int i = 0; i < N; ++i)
    {
        arr[i].a = "aaa aaa";
        arr[i].b = "bbb bbb";
        arr[i].c = "ccc ccc";
        arr[i].n = i;
        arr[i].m = i + 1;
        vec.push_back(arr[i]);
    }
 
    ofstream fout("file");
    for (int i = 0; i < vec.size(); ++i)
        fout << vec[i];
    fout.close();
 
    vector <A> v;
    
    ifstream fin("file");
    if (fin)
    {
        A temp;
        while (fin >> temp)
            v.push_back(temp);
            
        fin.close();
    }
    else cout << "Error!" << endl;
 
     for (int i = 0; i < v.size(); ++i)
        cout << v[i];
 
    system("pause");
    return 0;
}
1
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
15.12.2013, 01:50  [ТС]
alsav22, вот за это реально огромное спасибо. ладно, завтра с тем обьектом, где поля - контейнеры других обьектов, разберусь. Если что, то еще напишу
0
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
15.12.2013, 12:53  [ТС]
alsav22, перегрузил операторы для UntreatedOrders
Кликните здесь для просмотра всего текста
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef UNTREATEDORDER
 #define UNTREATEDORDER
#include <iostream>
#include <string>
#include <vector>
#include <list>
 
#include "Breakage.h"
#include "Consumables.h"
#include "Parts.h"
#include "Vehicle.h"
 
class UntreatedOrder
{
protected:
    Vehicle vehcl;
    std::vector<Breakage>breakg;
    std::vector<Parts>used_parts;
    std::vector<Consumables>used_consumables;
 
    char *date_format;
 
    time_t date_in;
    time_t deadline;
 
    bool status;
public:
    UntreatedOrder::UntreatedOrder()
    {
        date_format = "%d %B, %Y";
        status = false;
    }
    void add(std::list<Parts>*, std::list<Consumables>*);
    void show(int);
    void edit(std::list<Parts>*, std::list<Consumables>*);
    void make_done();
    Parts show_parts(std::list<Parts>*);
    Consumables show_consumables(std::list<Consumables>*);
    int return_all_price();
 
    friend std::ostream& operator<<(std::ostream& out, const UntreatedOrder& a) 
    {        
        out << a.breakg.size() << std::endl;
        for(int i = 0; i < a.breakg.size();i++)
        {
            out << a.breakg[i];
        }
        std::cout << std::endl;
        out << a.used_parts.size() << std::endl;
        for(int i = 0; i < a.used_parts.size();i++)
        {
            out << a.used_parts[i];
        }
        std::cout << std::endl;
        out << a.used_consumables.size() << std::endl;
        for(int i = 0; i < a.used_consumables.size();i++)
        {
            out << a.used_consumables[i];
        }
        std::cout << std::endl;
        out << a.vehcl << std::endl;
        out << a.date_in << std::endl;
        out << a.deadline << std::endl;
        return out;
    }
 
    friend std::istream& operator>>(std::istream& in, UntreatedOrder& a)
    {
        int n;
        in >> n;
        Breakage b;
        for (int i = 0; i < n; ++i)
        {
            in >> b;
            a.breakg.push_back(b);
        }
 
        in >> n;
        Parts p;
        for (int i = 0; i < n; ++i)
        {
            in >> p;
            a.used_parts.push_back(p);
        }
 
        in >> n;
        Consumables c;
        for (int i = 0; i < n; ++i)
        {
            in >> c;
            a.used_consumables.push_back(c);
        }
        in >> a.vehcl;
        in >> a.date_in;
        in >> a.deadline;
 
        in.ignore(1);
        return in;
    }
};
#endif
вот так:
Кликните здесь для просмотра всего текста
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
52
53
54
55
56
57
58
59
friend std::ostream& operator<<(std::ostream& out, const UntreatedOrder& a) 
    {        
        out << a.breakg.size() << std::endl;
        for(int i = 0; i < a.breakg.size();i++)
        {
            out << a.breakg[i];
        }
        std::cout << std::endl;
        out << a.used_parts.size() << std::endl;
        for(int i = 0; i < a.used_parts.size();i++)
        {
            out << a.used_parts[i];
        }
        std::cout << std::endl;
        out << a.used_consumables.size() << std::endl;
        for(int i = 0; i < a.used_consumables.size();i++)
        {
            out << a.used_consumables[i];
        }
        std::cout << std::endl;
        out << a.vehcl << std::endl;
        out << a.date_in << std::endl;
        out << a.deadline << std::endl;
        return out;
    }
 
    friend std::istream& operator>>(std::istream& in, UntreatedOrder& a)
    {
        int n;
        in >> n;
        Breakage b;
        for (int i = 0; i < n; ++i)
        {
            in >> b;
            a.breakg.push_back(b);
        }
 
        in >> n;
        Parts p;
        for (int i = 0; i < n; ++i)
        {
            in >> p;
            a.used_parts.push_back(p);
        }
 
        in >> n;
        Consumables c;
        for (int i = 0; i < n; ++i)
        {
            in >> c;
            a.used_consumables.push_back(c);
        }
        in >> a.vehcl;
        in >> a.date_in;
        in >> a.deadline;
 
        in.ignore(1);
        return in;
    }

в файл пишет, а вот читать не хочет.

елси так открывать
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
    void openOrdersFromFile()
    {
        std::ifstream fin("ORDERS.DAT");
        UntreatedOrder temp;
        while(fin >> temp)
        {
            untreated_orders.push_back(temp);
            temp.show(1);
        }
        fin.close();
    }

то просто цикл ниразу не выполняеться, а если поставить true и построчно проходить, то ошибка:
Миниатюры
Ошибка при открытые файла  
0
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
15.12.2013, 16:04  [ТС]
для Vehicle, Parts, Consumables и Breakage операторы перегрузил, их сохраняет и читает нормально

Добавлено через 5 минут
еще раз построчно прошел код, ошибка именно в строчке
C++
1
temp.show(1);
Хотя, если ее забрать, и потом просто просмотреть все заказы, то там пусто
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 18:13
Покажите перегрузку для Breakage. Файл с записью UntreatedOrderсмотрели? Там пустых строк, случайно, нет? Что за show()? В UntreatedOrder разве есть такой?

Добавлено через 3 минуты
Смотрю я на ваш class UntreatedOrder и вижу там указатель: char *date_format. Не знаю, как вы его используете, но если в классе есть указатель, то всегда делают конструктор копирования, оператор присваивания и деструктор (http://ru.wikipedia.org/wiki/П... ммирование)).
1
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
15.12.2013, 18:35  [ТС]
alsav22, вот breakage
Кликните здесь для просмотра всего текста
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
#include <string>
#include <string>
#include <iostream>
#include <iomanip>
 
#include "FatherClass.h"
 
class Breakage: public FatherClass 
{
protected:
    bool repaired;
public:
    Breakage::Breakage()
    {
        repaired = false;
    }
 
    void add();
    void edit();
    void show();
    friend std::ostream& operator<<(std::ostream& out, const Breakage& a) 
    {        
        out << a.Name << std::endl;
        out << a.Description << std::endl;
        out << a.Type << std::endl;
        out << a.cost << std::endl;
        out << a.repaired << std::endl;
        return out;
    }
 
    friend std::istream& operator>>(std::istream& in, Breakage& a)
    {
        getline(in, a.Name);
        getline(in, a.Description);
        getline(in, a.Type);
        in >> a.cost;
        in >> a.repaired;
        in.ignore(1); 
        return in;
    }
};


Добавлено через 7 минут
alsav22, date_format использую в методе show для вывода даты(перевожу time_t в такой формат "%d %B, %Y"; ). Его сохрянять не надо. при создании обьекта он сам инициализируетсья в конструкторе. show() есть.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 18:51
show() увидел. Не на все вопросы ответили. Сделайте проверку на открытие файла. Файл новый создаёте после изменений в коде? А то бывает, что код изменили, а файл старый используется (если при создании содержимое не стирается, например, создаётся для дозаписи). Работайте с отладчиком, смотрите что не так.
1
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
15.12.2013, 20:03  [ТС]
alsav22, ну сейчас еще раз попробую.

Добавлено через 49 минут
alsav22,
Кликните здесь для просмотра всего текста
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#ifndef UNTREATEDORDER
 #define UNTREATEDORDER
#include <iostream>
#include <string>
#include <vector>
#include <list>
 
#include "Breakage.h"
#include "Consumables.h"
#include "Parts.h"
#include "Vehicle.h"
 
class UntreatedOrder
{
protected:
    Vehicle vehcl;
    std::vector<Breakage>breakg;
    std::vector<Parts>used_parts;
    std::vector<Consumables>used_consumables;
 
    char *date_format;
 
    time_t date_in;
    time_t deadline;
 
    bool status;
public:
    UntreatedOrder::UntreatedOrder()
    {
        date_format = "%d %B, %Y";
        status = false;
    }
    void add(std::list<Parts>*, std::list<Consumables>*);
    void show(int);
    void edit(std::list<Parts>*, std::list<Consumables>*);
    void make_done();
    Parts show_parts(std::list<Parts>*);
    Consumables show_consumables(std::list<Consumables>*);
    int return_all_price();
 
    friend std::ostream& operator<<(std::ostream& out, const UntreatedOrder& a) 
    {        
        out << a.used_parts.size() << std::endl;
        for(int i = 0; i < a.used_parts.size();++i)
        {
            out << a.used_parts[i];
        }
        std::cout << std::endl;
        out << a.breakg.size() << std::endl;
        for(int i = 0; i < a.breakg.size();++i)
        {
            out << a.breakg[i];
        }
        std::cout << std::endl;
        out << a.used_consumables.size() << std::endl;
        for(int i = 0; i < a.used_consumables.size();++i)
        {
            out << a.used_consumables[i];
        }
        std::cout << std::endl;
        out << a.vehcl << std::endl;
        out << a.date_in << std::endl;
        out << a.deadline << std::endl;
        return out;
    }
 
    friend std::istream& operator>>(std::istream& in, UntreatedOrder& a)
    {
        system("cls");
        int n;
        in >> n;
        in.ignore(1); 
        std::cout << n;
        Parts p;
        for (int i = 0; i < n; ++i)
        {
            in >> p;
            p.show();
            a.used_parts.push_back(p);
        }
 
        in >> n;
        in.ignore(1); 
        std::cout << n;
        Breakage b;
        for (int i = 0; i < n; ++i)
        {
            in >> b;
            b.show();
            a.breakg.push_back(b);
        }
 
        in >> n;
        in.ignore(1); 
        Consumables c;
        for (int i = 0; i < n; ++i)
        {
            in >> c;
            c.show();
            a.used_consumables.push_back(c);
        }
        in >> a.vehcl;
        a.vehcl.show();
        in >> a.date_in;
        std::cout << a.date_in; 
        in >> a.deadline;
        std::cout << a.deadline;
 
        in.ignore(1);
        return in;
    }
};
#endif
теперь вроде работает нормально.

Добавлено через 38 секунд
только тут цикл два раза проходит
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
    void openOrdersFromFile()
    {
        std::ifstream fin("ORDERS.DAT");
        UntreatedOrder temp;
        while(fin >> temp)
        {
            untreated_orders.push_back(temp);
            temp.show(1);
        }
        fin.close();
    }


Добавлено через 42 секунды
но в контейнер кидает только первый елемент. сейчас попробую пару обьектов записать в файл

Добавлено через 6 минут
два заказа тоже нормально прочитало. только хз почему цикл один лишний раз проходит

Добавлено через 7 минут
alsav22, спасибо вам за огромное помощь, без вас я бы врятли сам сделал это сохранение
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 20:20
Цитата Сообщение от o33ik Посмотреть сообщение
два заказа тоже нормально прочитало. только хз почему цикл один лишний раз проходит
Это нормально (код так сделан). Когда считывается последний temp (он читается до '\n', за которым EOF), то поток ещё рабочий, при следующем заходе поток портится и поэтому лишнего не прочитает, но будет выход из while().

Добавлено через 6 минут
Можно где-то в начале оператора чтения (после чтения первого, что портит поток) сделать проверку годности потока и делать return если поток нерабочий, чтобы не было лишних перемещений по коду. Заход будет, но не будет лишних действий.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2013, 20:20

При открытии проекта не открываются последние открытые окна
Сколько лет при открытии проекта в VS2010 открывались автоматически все окна, которые были открыты перед последним сохранением проекта и я...

Винда скрывает все открытые окна при перетаскивании одного
привет открыто окон 20 различных программ беру одно и начинаю перетаскивать его за шапку если перетаскиваю прямолинейно то все ок -...

Ошибка при открытии файла - Ошибка в части содержимого в книге
Добрый день! Открываю файл. Создаю макросом сводную таблицу, сохраняю файл. Затем при попытке открыть данный файл появляется ошибка:...

FTP SERV-U Ошибка при копировании файла при медленном интернете
На машине на системе WIN7 стоит FTP сервер SERV-U. Другие машины используют для выхода в интернет 3G модемы, и подключаются к фтп для...

При использовании кода в модуле ошибка при открытии файла
есть такой простенький код, которій отлично работает в скрипте *.pl use Cwd; my $cwd = getcwd(); $cwd = $cwd ....


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru