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

ввод из файла структуры..исправьте... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задачка про зацикливание при вводе не числа (решено но нужна консульт) http://www.cyberforum.ru/cpp-beginners/thread426318.html
Все решено ошибка найдена если есть идеи могут предложить лучший алгоритм int NumberOfElements=0; //глобальная переменная int main() { clrscr(); do { // эта и следующая строка позволяют избежать зацикливания cin в случае ввода не числа
C++ Генерация случайного числа, максимально случайного Добрый день, задался вопросом как получить случайное число, но не псевдо-случайное по идее функции rand() и srand(time(NULL)) используют ниже следующий код или подобный ему int rand(void) { next=next*1103515245+12345; return((unsigned int)(next/65536)%32768); } void srand(unsigned int seed) { next=seed; } http://www.cyberforum.ru/cpp-beginners/thread426278.html
C++ Проблема с итератором в <vector>
Всем привет. Помогите пожалуйста решить проблему: У меня существует класс class Book { string author,title,publishing; int year_p; double price; public: Book(){author=title=publishing="";year_p=price=0;} Book(string a,string t,int y,string p,double pr)
Ошибка в циклах C++
В примере есть 2 цикла(один в другом). Ссылка: http://ideone.com/lnxyf. Там получилось так, что ввод данных просто пропускается. Почему?
C++ Цвет строки http://www.cyberforum.ru/cpp-beginners/thread426240.html
Как вывести строку определенно цвета(зеленый допустим)? Компилятор borkand 3.1 Например: main { cout<<"HELLO !!!!"<<endl; }
C++ Объединение строк помогите написать функцию объединения двух строк в одну (вторая присваивается к концу первой). Объединить две строки, затем еще две. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
11.01.2012, 21:00     ввод из файла структуры..исправьте...
Psychko, я хотел подправить ваш код но передумал и написал с нуля вам костяк БД на плюсах, вам только немножко доработать...
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
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <conio.h>
using namespace std;
 
struct doxodi
{
    char shifr[80];
    int  p1;
    int  p2;
};
 
bool bInitBase(char * szPath);
bool bWriteStruct(ofstream ofs, doxodi pst);
bool bReadStruct(ifstream &ifs, doxodi &pst);
 
int main()
{
    char sDBName[] = "data.txt";
    doxodi pst = {0};
    ifstream ifs;
    ofstream ofs;
    bool bContinue = bInitBase(sDBName);
    while(bContinue)
    {
        system("cls");
        cout<<"\t***MENU***\n";
        cout<<"1 - Add(Write) struct in file\n";
        cout<<"2 - Read struct from file\n";
        cout<<"Any other key - exit from program\n";
        switch(_getch())
        {
        case '1':
            cout<<"\tAdd(Write) struct in file\n";
            ofs.open(sDBName,ios::in|ios::out|ios::app);
            if(!ofs)
                cout<<"Error open : "<<sDBName<<endl;
            else
            {
                cout<<"shifr : ";cin.getline(pst.shifr,80);
                cout<<"p1    : ";cin>>pst.p1;
                cout<<"p2    : ";cin>>pst.p2;
                if(!bWriteStruct(ofs, pst))
                    cout<<"Error writing struct in data.txt\n";
                else
                    cout<<"Struct added\n";
                ofs.clear();
                ofs.close();
            }
            break;
        case '2':
            cout<<"\tRead struct from file\n";
            ifs.open(sDBName,ios::in|ios::out);
            if(!ifs)
                cout<<"Error open : "<<sDBName<<endl;
            else
            {
                ifs.seekg(0,ios::beg);
                while(!ifs.eof() && !ifs.bad())
                {
                    if(!bReadStruct(ifs, pst))
                        cout<<"Error read struct in : "<<sDBName<<endl;
                    else
                    {
                        cout<<"shifr : "<<pst.shifr<<endl;
                        cout<<"p1    : "<<pst.p1<<endl;
                        cout<<"p2    : "<<pst.p2<<endl;
                    }
                }
                ifs.clear();
                ifs.close();
            }
            break;
        default:
            cout<<"You choose exit from program\n";
            break;
        }
        system("pause");
    }
    return 0;
}
 
bool bInitBase(char * szPath)
{
    bool isInit = false;
    ofstream ofs;
    ifstream ifs(szPath);
    if(!ifs)
        ofs.open(szPath);
    else
    {
        isInit = true;
        ifs.close();
    }
    if(!ofs)
        cout<<"Error creation data.txt maby you run program from CD\n";
    else
    {
        isInit = true;
        ofs.close();
    }
    return isInit;
}
 
bool bWriteStruct(ofstream ofs, doxodi pst)
{
    bool isWrite = false;
    if(ofs)
    {
        if(!cin.fail())
        {
            ofs.seekp(0,ios::end);
            ofs<<pst.shifr<<endl;
            ofs<<pst.p1<<endl;
            ofs<<pst.p2<<endl;
            if(ofs.good())
                isWrite = true;
        }
    }
    return isWrite;
}
 
bool bReadStruct(ifstream &ifs, doxodi &pst)
{
    bool isRead = false;
    ifs.clear();
    if(ifs)
    {
        ifs.getline(pst.shifr,80);
        ifs>>pst.p1;
        ifs>>pst.p2;
        if(!ifs.bad() && !ifs.eof())
            isRead = true;  
    }
    return isRead;
}
Миниатюры
ввод из файла структуры..исправьте...  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru