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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2012, 18:06   #1
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию Чтение из бинарного файла в С++

записал в файл цифру 5. пытаюсь прочитать из него. выдает ошибку что "The variable xtest is being used without ini.." короче переменная хтест используется без инициализации. так я вроде перед тем как вывести ее я ведь записываю в нее..объясните пожалуйста.

Код:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream files;
int xtest;
files.open("testing.dat", ios::binary | ios::in);
files.seekg(0);
files.read(reinterpret_cast<char*>(xtest), sizeof(xtest));
files.close();
cout << xtest << endl;
return 1;
}
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 14.07.2012, 18:10   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

reinterpret_cast надо для &xtest, а не xtest.
Somebody вне форума Ответить с цитированием
Старый 14.07.2012, 18:18   #3
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

не могли бы вы объяснить запись в файл и чтение из него? и скинуть самый просто код. а то не очень могу разобраться даже с книжкой(( примеры книжные работают, но когда пытаюсь свои реализовать то ошибка..буду благодарен очень

вот так я записал цифру 5 файл. тут хотя бы ошибок нету?
Код:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream files;
int xtest=5;
files.open("testing.dat", ios::binary);
files.write(reinterpret_cast<char*>(xtest), sizeof(int));
files.close();
return 1;
}
Я могу, Я хочу, Я буду!

Последний раз редактировалось Stilet; 14.07.2012 в 19:40.
ArmanPrestige вне форума Ответить с цитированием
Старый 14.07.2012, 19:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
files.write(reinterpret_cast<char*> (xtest), sizeof(int));
А почему не так: files<<xtest;
И почему не оfstream files;
?
I'm learning to live...

Последний раз редактировалось Stilet; 14.07.2012 в 19:47.
Stilet вне форума Ответить с цитированием
Старый 14.07.2012, 19:49   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
А почему не так: files<<xtest;
это чтение символьных данных, а не бинарных.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2012, 23:49   #6
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Актуально
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 15.07.2012, 09:14   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Актуально
Что именно? Я твой код тестировал, он отработал нормально.
Впрочем не знаю как ты а я бы писал так:
Код:
	ofstream f("d:\\1\\q.txt");
	int x=5;
	f.write((char*)&x,sizeof(x));
	f.close();
Если местные спецы по Си видят в сим примере дурной знак пусть отпишутся.

P.S. А пост Somebody ты специально игнорируешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2012, 15:05   #8
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Его совет я использовал уже. но проблема у меня в том что файл не создается через fstream, через ofstream и ifstream все ок.
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 15.07.2012, 16:19   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит используй ofstream и ifstream
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2012, 20:43   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Тот же Страуструп не советует использовать приведение типов в Си-стиле, когда есть набор явных кастов. См. например "Специальное издание", параграф Б.2.3., последний абзац.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись и чтение бинарного файла Стремящийся Общие вопросы C/C++ 4 27.05.2012 17:33
Чтение из бинарного файла lioc C# (си шарп) 10 20.02.2012 21:12
чтение бинарного файла Snake22 Общие вопросы Delphi 1 23.01.2012 07:44
чтение из бинарного файла Kukurudza Общие вопросы C/C++ 6 08.09.2011 19:09
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31