Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись структуры в файл 
:(
    Опции темы
Гость_студент
Дата 16.1.2006, 16:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет ! smile

Подскажите, пожалуйста, как записать структуру в файл с помощью STL т.е. надо записать поля данных Ф.И.О.
используя "fstream.h" а не старые функции для работы с файлами которые объявлены в "stdio.h".

Заранее спасибо. smile

  Вверх
azesmcar
Дата 16.1.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



PM   Вверх
LuckLess
Дата 16.1.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.9.2004

Репутация: 1
Всего: 1



пишешь оператор
Код

std::ostream& operator<<(std::ostream& oc , const MyStruct& s){
//тут вывод собственно.
return oc
}


а затем просто
Код

..
std::ofstream ofile("kaka.txt");
MyStruct s;
ofile<<s;
ofile.close();
..

PM MAIL   Вверх
Гость_Студент
Дата 16.1.2006, 17:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, я так и делаю

Код

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

struct Data
{
        char firstName[20];
        char lastName[20];
        int  n;
};


fstream & operator << (fstream &s, Data &d)
{
    s << d.firstName <<' '<< d.lastName <<' ' << d.n;
}

fstream & operator >> (fstream &s, Data &d)
{
    s >> d.firstName >> d.lastName >> d.n;
}


void write_data()
{
        Data st;
        fstream ioFile;
        ioFile.open("data.dat",ios::ate |ios::binary);
        if (ioFile.bad())
        {
         cerr << "Error create file...";
                getch();
                return;
        }
        cout << " введите имя:";
        cin  >> st.firstName;
        cout << " введите фамилию:";
        cin  >> st.lastName;
        cout << " введите год рождения:";
        cin  >> st.n;
        
      ioFile << st;
        ioFile.close();
}



int main()
{

        write_data();
        return 0;
}
        


только вот почему-то он не добавляет новые данные в файл если я устанавливаю режим "ios::ate" или я что-то не так делаю?
  Вверх
comcon1
Дата 16.1.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



обычный для начала поставь ios::out

во-первых, нафига бинарно?

во-вторых, почему не возвращаешь fstream переменную в определении операторов?


--------------------
PM MAIL   Вверх
LuckLess
Дата 16.1.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.9.2004

Репутация: 1
Всего: 1



и еще не надо делать это для fstream,
перегружай для ostrea и istream , и тогда этот оператор сможешт использовать для всех потоков
PM MAIL   Вверх
Гость_Студент
Дата 16.1.2006, 17:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











comcon1
Если я открываю файл с режимом "ios::out" то он создает новый файл и тем самым перезаписывает существующий файл smile


  Вверх
comcon1
Дата 16.1.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



ios::app, на сколько я помню.


--------------------
PM MAIL   Вверх
Гость_Студент
Дата 16.1.2006, 18:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Действительно надо было указать режим "ios::app" все работает smile
спасибо comcon1 за помощь. smile
  Вверх
comcon1
Дата 16.1.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



регистрируйся и оставася, гость-студент. smile и закрой тему


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.