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

Запись/чтение вектора в/из файла.Структуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод "пузырька", ввод с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread999511.html
Здравствуйте, требуется прога. Упорядочить элементы методом пузырька по возрастанию, при этом элементы и размер массива вводиться с клавиатуры. Надеюсь на помощь, сижу 3 день( #include "stdafx.h" #include "conio.h" #include "iostream" using namespace std; int main() { int m;
C++ Вывести все содержащиеся в массиве четные числа в порядке убывания их индексов, а также их количество 1. Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве четные числа в порядке убывания их индексов, а также их количество K Ребят если можно то с объяснением, никак не могу с этими задачами разобраться! Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread999474.html
Программа (форматированный ввод-вывод данных) C++
Программа из книги (Шилтд Базовый курс, 3е издание, 2010г). Не совсем понимаю что автор книги хотел довести до читателя, а разъяснить не кому. Поэтому обращаюсь с просьбой, не мог ли кто нибудь расставить комментарии. Если я правильно понимаю то f = cout.flags() сохраняет форматирование в перечисление f и передает его функции showflags, а та в свою очередь отображает двоичную версию значений. И...
C++ Создать абстрактный класс Vehicle. На его основе реализовать классы:
Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle (велосипед) и Lorry (грузовик). Классы должны иметь возможность задавать и получать параметры средств передвижения (цена, максимальная скорость, год выпуска и т.д.). Наряду с общими полями и методами, каждый класс должен содержать и специфичные для него поля. 10
C++ Определить попадает ли точка с заданными координатами в сектор http://www.cyberforum.ru/cpp-beginners/thread999446.html
решите пожалуйста задачу: Определить попадает ли точка с заданными координатами в сектор: r*r=(x/2)*(x/2)+(y/2)*(y/2) r1*r1=(x/2)*(x/2)+(y/2)*(y/2). условие: x<o;y>o. заранее спасибо!!!
C++ Не читаются операторы ввода вывода #include "stdafx.h" #include <math.h> #include <iostream> using namespace std; void main() { int q, a; do подробнее

Показать сообщение отдельно
Nicu
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 5

Запись/чтение вектора в/из файла.Структуры - C++

06.11.2013, 12:13. Просмотров 994. Ответов 1
Метки (Все метки)

Доброе время суток.Проблема заключается в следующем: в файл идет запись вектора (запись вроде-бы успешна,насколько я могу судить).После чтения,пытаюсь вывести вектор,но соответственно он не выводится и его размер = 0.
Код:
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
114
115
116
117
118
119
120
121
122
123
124
125
126
struct Knigi
{
    string shifr_knigi; //шифр книги 
    string avtor;       //ФИО автора
    string nazvanie;    //название книги
    string izdatel;     //издательство 
    int god;            //год издания
    //int kol_vo_knig;    //количество данной книги в библиотеке 
};
/*istream& operator >>(istream& ,Knigi&);
ostream& operator <<(ostream& ,Knigi&); тут я пытаюсь вариант №2 чтение/запись,закоментил т.к. запись пашет,чтение нет*/
 
 
/*
istream& operator >>(istream& fout,Knigi &knigi)
{
    fout>>knigi.avtor>>knigi.god>>knigi.izdatel>>knigi.nazvanie>>knigi.shifr_knigi;
    return fout;
 
}
ostream& operator <<(ostream& fin,const Knigi &knigi)
{
    fin<<knigi.avtor<<knigi.god<<knigi.izdatel<<knigi.nazvanie<<knigi.shifr_knigi;
    return fin;
}*/
 
//Вот функции с помощью которых пишу и считываю вектор
void WFile(ofstream& fobj,Knigi& knigi)
{
    fobj.write((char*)&knigi,sizeof(knigi));
}
void RFile(ifstream& fobj,Knigi& knigi)
{
    fobj.read((char*)&knigi,sizeof(knigi));
}
 
 
//вот кусок функции, в которой идет запись
case '2': //создание файла книги
                                  { 
                                   k_k=0;
                                   do 
                                     {
                                      cout<<"\nВвод новой записи\n";
                                      cout<<"Введите шифр книги\n";
                                      cin>>tmp.shifr_knigi;
                                      cout<<"Введите ФИО автора\n";
                                      cin>>tmp.avtor;
                                      cout<<"Введите название книги\n";
                                      cin>>tmp.nazvanie;
                                      cout<<"Введите издательство книги\n";
                                      cin>>tmp.izdatel;
                                      cout<<"Введите год издания книги\n";
                                      cin>>tmp.god;
                                      masKnigi.push_back(tmp);// добавление элементов
                                      cout<<"В файле БД 'Книги' находится->"<<masKnigi.size()<<" книга(и)\n";
                                      cout<<"\n \n \n";
                                      cout<<"code->"<<masKnigi[k_k].shifr_knigi<<"\n";
                                      cout<<"aithor->"<<masKnigi[k_k].avtor<<"\n";
                                      cout<<"name->"<<masKnigi[k_k].nazvanie<<"\n";
                                      cout<<"izd->"<<masKnigi[k_k].izdatel<<"\n";
                                      cout<<"year->"<<masKnigi[k_k].god<<"\n";
                                      k_k++;
                                      cout<<"Хотите ввести еще одну запись? ( y-да/n-нет )?  ";
                                      cin>>otv;
                                      cout<<"\n \n \n";
                                      
                                      }
                                   while(otv=='y');
                                   cin.get();
                                   ofstream foutKnigi("Knigi.dat",ios::out|ios::binary|ios::trunc);
                                                                   //запись вектора в файл
                                   //std::copy(masKnigi.begin(), masKnigi.end(), std::ostream_iterator<Knigi>(foutKnigi, "\n")); попытка записи с помощью итератора
                                    for(int i=0;i<masKnigi.size();i++)
                                    {
                                        WFile(foutKnigi,masKnigi[i]);
 
                                    }
                                    foutKnigi.close();
                                    masKnigi.clear();//этим чистим вектор от значений
                                    cout<<masKnigi.size()<<"\ нажмите return";//тут я визуально проверяю что там в векторе осталось, можно будет удалить                                    
                                    
                                   }
//кусок функции с помощью которого считываем 
case '2': 
                               {
                                    
                                        ifstream finKnigi("Knigi.dat",ios::in|ios::binary);
                                        if(!finKnigi)
                                        {
                                            cout<<"Файл данных Книги пуст!\n";
                                            
                                        }
                                        for (int i=0;i<1;i++)
                                        {
                                            RFile(finKnigi,masKnigi[i]);
                                        }
                                        /*
                                        std::copy(std::istream_iterator<Knigi>(finKnigi), std::istream_iterator<Knigi>(), std::back_inserter(masKnigi)); маялся с итератором
                                        finKnigi.close();
                                        std::copy(masKnigi.begin(),masKnigi.end(),ostream_iterator<Knigi>(cout," "));
пытался вывести вектор таким способом*/
                                        
                                        
                                        for(int i=0;i<masKnigi.size();i++)
                                                {
                                                    cout<<"Mas["<<i<<"] ="<<masKnigi[i]<<"\n";// 1 способ вывода
                                                    
                                                }
                                        
 
                                        
 
                                        cout<<masKnigi.size();
                                        
                                   
                                 if(k_k==0)
                                     cout<<"Файл данных Книги пуст!";
                                 else
                                 {
                                 system("cls");
                                 //вывод таблицы книги
                                 system("cls");
                                 }*/
                                 break;
                                }
Прошу совета как сделать нормально чтение или чтение/запись или объяснение в чем я не прав когда пишу такой как есть сейчас код.
За плохие названия переменных/функций/структур и прочего знаю,но мопед не мой как говорится
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru