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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файловый ввод/вывод, Файловый ввод/вывод  
:(
    Опции темы
RomaKiev
Дата 27.1.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток.

Имеется следующий код:

Код

#include<iostream>
#include<fstream>
using namespace std;
class person
{
   protected:
        char name[80];
        short age;
   public:
   void putdata()
   {
        cout<<"Vvedite vashe imja: ";
        cin>>name;
        getchar();
        cout<<"Vvedite vash vozrast: ";
        cin>>age;
        getchar();
        }
   void showdata()
   {
        cout<<"Vas zovut: "<<name<<", "<<"vash vozrast: "<<age<<endl;
        }
};
int main()
{
    person pers,pers1;
    pers.putdata();
    fstream file;
    file.open("Text2.txt",ios::binary|ios::app|ios::in|ios::out);
    file.write(reinterpret_cast<char*>(&pers),sizeof(pers));
    file.close();
    getchar();
    return 0;
}


Создал потоковый объект file и заполнил его данным объекта pers. После того как запустил программу, ожидал в той же папке, где находится исполняемый файл программы найти 
созданный в программе текстовый файл "Text2.txt" Но его там нет. Как понимаю, он вообще не был создан. Почему?
PM MAIL   Вверх
bsa
Дата 27.1.2011, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Добавь между строками 29 и 30:
Код
    if (!file) {
        perror("Failed to open file");
        return 1;
    }

PM   Вверх
Batbko
Дата 27.1.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня файл создаёться и данные туда корректно записываються.
Компиятор gcc 4.4.0.

PM MAIL   Вверх
RomaKiev
Дата 28.1.2011, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробовал ваш вариант, но всё равно безуспешно(((((
Когда использую объект класса ifstrem или ofstream файл создаётся, но внутри полная абра кадабра! Как берусь за fstream, файла вообще нет!

Добавлено через 39 секунд
Цитата(Batbko @ 27.1.2011,  23:40)
У меня файл создаёться и данные туда корректно записываються.
Компиятор gcc 4.4.0.

У меня компилятор Dev C++ 4.9.9.2  Неужели дело в компиляторе?
PM MAIL   Вверх
bsa
Дата 28.1.2011, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



PM   Вверх
alexvs11
Дата 28.1.2011, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


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

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



Цитата(RomaKiev @  28.1.2011,  00:02 Найти цитируемый пост)
но внутри полная абра кадабра

а что же там должно быть?
PM MAIL   Вверх
RomaKiev
Дата 28.1.2011, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(alexvs11 @ 28.1.2011,  00:33)
Цитата(RomaKiev @  28.1.2011,  00:02 Найти цитируемый пост)
но внутри полная абра кадабра

а что же там должно быть?

Ну, как я понимаю имя и возраст, то есть данные объекта person
Например: Roman 24
PM MAIL   Вверх
bsa
Дата 28.1.2011, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(RomaKiev @  28.1.2011,  02:13 Найти цитируемый пост)
Ну, как я понимаю имя и возраст, то есть данные объекта person
Например: Roman 24 
 smile  smile 

А теперь пока не засмеяли быстро беги в гугл и ищи, чем отличается текстовый файл от двоичного.
PM   Вверх
RomaKiev
Дата 28.1.2011, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(bsa @ 28.1.2011,  11:23)
Цитата(RomaKiev @  28.1.2011,  02:13 Найти цитируемый пост)
Ну, как я понимаю имя и возраст, то есть данные объекта person
Например: Roman 24 
 smile  smile 

А теперь пока не засмеяли быстро беги в гугл и ищи, чем отличается текстовый файл от двоичного.

а могу ли я коректно записать в файл данные объекта person не в двоичном, а текстовом режиме ? Или же хотя-бы как мне всё-таки прочитать этот двоичный файл?

Это сообщение отредактировал(а) RomaKiev - 28.1.2011, 13:35
PM MAIL   Вверх
bsa
Дата 28.1.2011, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



RomaKiev, раз записал через write, то читай через read. Логично?
А чтобы писать в текстовый файл, то убери флаг ios::binary и используй file << pers.name << ' ' << pers.age << '\n'; для записи
PM   Вверх
RomaKiev
Дата 28.1.2011, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(bsa @ 28.1.2011,  15:01)
RomaKiev, раз записал через write, то читай через read. Логично?
А чтобы писать в текстовый файл, то убери флаг ios::binary и используй file << pers.name << ' ' << pers.age << '\n'; для записи

Понимаю, что может быть надоел, но дело всё в том, что я хочу записать в цикле в файл данные сразу с нескольких объектов типа person. При этом хотелось бы чтоб этот файл был читабельным, но ещё я хочу потом считывать данные с этого файла с любого места с помощью функций seekg() и tellg()(то есть данные о разных персонах), а для этого как я понимаю файл должен быть не текстовый а двоичный. Как сохранить читабельность и двоичный формат файла?

Кроме того, возвращаясь к самому первому вопросу, не ясно, почему при создании объекта класса fstream у меня файл вообще не создаётся(для ifstream и ofstream всё работает)?  

Заранее спасибо.
PM MAIL   Вверх
bsa
Дата 28.1.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(RomaKiev @  28.1.2011,  16:33 Найти цитируемый пост)
Кроме того, возвращаясь к самому первому вопросу, не ясно, почему при создании объекта класса fstream у меня файл вообще не создаётся(для ifstream и ofstream всё работает)?  
Понятия не имею. Сделай несколько проверок состояния fstream после открытия.

PM   Вверх
xvr
Дата 31.1.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(RomaKiev @  28.1.2011,  15:33 Найти цитируемый пост)
 Как сохранить читабельность и двоичный формат файла?

Никак - это взаимоисключающие понятия (если только его (файл) не будет читать робот)


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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