Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2011, 20:34   #1
lawliet93
Форумчанин
 
Регистрация: 30.08.2011
Сообщений: 102
По умолчанию Запись данных из классов в файл (в цикле)

Добрый вечер! Нужно записать данные из нескольких классов в 1 файл, желательно чтобы дописывалось в конец файла, а не перезаписывалось. Вот код
Код:
#include<iostream>
#include<string>
#include<fstream>

using namespace std;

class sklad {
      public:
             int in;
             string naz;
             int ves;
             int cena;
             int kol;
      void print(){
           cout << "Inventarnij nomer: " << in << endl;
           cout << "Nazvanie         : " << naz << endl;
           cout << "Ves              : " << ves << endl;
           cout << "Cena             : " << cena << endl;
           cout << "Kolichestvo      : " << kol << endl;
                }
       void edit(){
        cout << "Vvedite novyj inv. nomer: "; cin >> in; cout << endl;
        cout << "Vvedite novoe nazvanie: "; cin >> naz; cout << endl;
        cout << "Vvedite novyj ves: "; cin >> ves; cout << endl;
        cout << "Vvedite novyu ceny: "; cin >> cena; cout << endl;
        cout << "Vvedite novoe kolichestvo: "; cin >> kol; cout << endl;
            }
                    
                }; 
    int main(){
        
        sklad test[3];
        int i,x,y;
        for(i=0;i<3;i++){
        cout << "Zapis nomer " << i+1 << endl;                 
        cout << "Vvedite inv. nomer: "; cin >> test[i].in; cout << endl;
        cout << "Vvedite nazvanie: "; cin >> test[i].naz; cout << endl;
        cout << "Vvedite ves: "; cin >> test[i].ves; cout << endl;
        cout << "Vvedite ceny: "; cin >> test[i].cena; cout << endl;
        cout << "Vvedite kolichestvo: "; cin >> test[i].kol; cout << endl;
                        }
        
        cout << "Esli vy hotite redaktirovatj zapisj - vvedite ee nomer i nazhmite Enter" << endl << " esli ne hotite - vvedite 000 i nazhmite Enter" << endl; cin >> x; cout << endl;
        if(!x==000)
                   test[x].edit();
                   else
                   cout << "Pakedava!" << endl; 
         cout << "A esli vy hotite posmotretj sho vy tam napisali, tak vvedite esho raz nomer zapisi i tiskajte Enter" << endl << "a esli ne hatite to 000" << endl; cin >> y; cout << endl;
         if(!y==000)
         test[y].print();
         else
         cout << "Pakedava!" << endl;
                 
       ofstream db("file.txt");                   // вот
       for(i=0;i<3;i++){                          // тут
                        db << test[i] << endl; //  не
                        }                             // понятно 
                    
    
 system("PAUSE");
 return 0;   
}

Последний раз редактировалось lawliet93; 30.08.2011 в 20:37. Причина: лишние фигурные скобки, но не работает все-равно
lawliet93 вне форума Ответить с цитированием
Старый 01.09.2011, 00:30   #2
Ak1ra
 
Аватар для Ak1ra
 
Регистрация: 19.02.2009
Сообщений: 9
По умолчанию

Переделай функцию print, чтоб по умолчанию был вывод на экран, и в другой поток (например файл), если он указан при вызове метода:
Код:
	void print (ostream &os=cout)
	{
		os << "Inventarnij nomer: " << in   << endl;
		os << "Nazvanie         : " << naz  << endl;
		os << "Ves              : " << ves  << endl;
		os << "Cena             : " << cena << endl;
		os << "Kolichestvo      : " << kol  << endl;
		os << endl;
	}
и вывод:
Код:
	ofstream db ("file.txt", ios::app); // ios::app для записи в конец файла
	for (i=0; i<3; i++)
		test [i].print (db); // вывод в файл
	db.close (); // очистка потока и закрытие файла
А вообще лучше почитай про перегрузку оператора << , там всё похоже, только вывод будет db << test [i]; или cout << test [i];

Последний раз редактировалось Ak1ra; 01.09.2011 в 00:36.
Ak1ra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись данных в файл Pti44ka Помощь студентам 5 10.12.2009 20:09
запись данных в файл Real Injenegr Помощь студентам 2 23.07.2009 03:21
запись классов в бинарный файл Feannewedd Общие вопросы C/C++ 6 29.06.2009 10:11
Запись данных в файл balamut JavaScript, Ajax 1 29.05.2009 14:39
запись данных в файл Артэс Общие вопросы C/C++ 13 09.06.2007 22:01