Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 7
1

Добавлении данных из бинарного файла в очередь

20.04.2010, 16:02. Просмотров 367. Ответов 0
Метки нет (Все метки)

Я пишу данные очереди в бинарный файл, потом считываю, отладчик пишит, что данные считаны, однако в функции enqueue происходит вылет проги. Помогите с идеями, я уже замучалась.
Код
Очередь: 

template <typename Item>
class QueueTP
{
private:
	enum {Q_SIZE = 10};
	class Node 
	{
	public:
		Item item;
		Node *next;
		Node (const Item & i): item(i), next(0) {}
	};

	Node *front;
	Node *rear;
	int itsSize; //текущее кол-во в очереди
	const int qsize; // макс. кол-во элементов
	QueueTP(const QueueTP & q) : qsize(0) {}
	QueueTP & operator=(const QueueTP & q) {return *this;}
public:
	QueueTP (int qs = Q_SIZE);
	~QueueTP();
	bool writeFile(std::ofstream & os);
	bool readFile(std::ifstream & is);
	void enqueue(const Item &item);
	void dequeue(Item &item);
	inline int size() const { return itsSize; }
	void clear();
	bool isempty() const


                         ...



Функция clear() для очистки всей очереди для считывания.

template <typename Item>
bool QueueTP<Item>::writeFile(std::ofstream & os)
{
	Node *temp = front;
	cout << "File" << endl;
	cout << temp->item;
	while (temp)
	{

		os.write(reinterpret_cast<char *> (&temp->item), sizeof(Item));
		temp = temp->next;
	}
	return true;
}

template <typename Item>
bool QueueTP<Item>::readFile(std::ifstream & is)
{
	clear();
	Item tmp;
	while (!is.eof())
	{
		is.read(reinterpret_cast <char *> (&tmp), sizeof(tmp));
		//enqueue(tmp);  //вот здесь все и рушится, точнее в самой функции
	}
	return true;
}





template <typename Item>
void QueueTP<Item>::enqueue(const Item &item)
{
	if (isfull())
		throw ExcEnqueue();
	Node *add = new Node(item); //создали узел node обвал проги!!!
	if (add == NULL)
		throw ExcEnqueue();
	itsSize++;
	if (front == 0)
		front = add; 
	else
		rear->next = add;
	rear = add;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2010, 16:02
Ответы с готовыми решениями:

Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager)
Пытаюсь загрузить файл с сервера, таким способом: public void download(Context context, String...

Считывание данных из бинарного файла
Доброго времени суток. Моя проблема уже была озвучена в теме. Вот листинг функции которая...

Чтение данных из бинарного файла
читаю по while (!stream.eof()), проблема в том что в конце в условие лишний раз заходит, и пытается...

Чтение данных из бинарного файла
Всем добрый день, разбираюсь с чтением бинарных файлов, застрял на том что чтение не производится...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2010, 16:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывод данных из бинарного файла
Доброго времени суток! Столкнулся с проблемой как мне вывести все что лежит в бинарном файле? fa...

Чтение данных из бинарного файла
программа должна считывать данные из бинарного файла, записывать их в переменную абстрактного типа...

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

Вывод на экран данных их бинарного файла
Привет, народ. Выручайте пожалуйста. Никак не могу сообразить, как вывести на экран данные из...

Чтение данных из бинарного файла в массив
Доброго всем времени суток. Мне нужно было прочитать из бинарного файла данные в массив int...

Открытие бинарного файла и преобразование данных в dec
Доброго времени суток! Подскажите каким образом можно открыть бинарный файл вида &quot;*.txt&quot; и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.