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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2012, 12:06   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Временные файлы.

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

Я не нашел функцию чистки файла (чтоб 0 байтов стало записано)
но я думаю можно ofstream файл открыть на имя исходного и он его заменит.

А вот удаление файла осталось для меня загадкой.

Подскажете?
pinkiller вне форума Ответить с цитированием
Старый 11.01.2012, 12:38   #2
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Вот код:
Код:
void Balance(){
		ofstream ofst("temp.dat", ios::out | ios::binary);
		int arrow, Num;
		Class a;
		Num=Number();
		read(reinterpret_cast<char*>(&arrow),sizeof(int));
		for(;arrow!=0;){
			ofst.write(reinterpret_cast<char*>(&arrow),sizeof(int));
			seekg(arrow, ios::beg);
			read(reinterpret_cast<char*>(&a), sizeof(Class));
			ofst.write(reinterpret_cast<char*>(&a), sizeof(Class));
			read(reinterpret_cast<char*>(&arrow),sizeof(int));
		}
		close();
		ofst.close();
		ofstream ofst2(Name.c_str());
		ofst2.close();
		open(Name.c_str(), fstream::in | fstream::out | fstream::binary);
		ifstream ifst;
		ifst.open(Name.c_str(), ios::in | ios::binary);
		ifst.seekg(0, ios::beg);
		ifst.read(reinterpret_cast<char*>(&arrow), sizeof(int));
		for(;arrow!=0;){
			write(reinterpret_cast<char*>(&arrow), sizeof(int));
			ifst.seekg(arrow, ios::beg);
			ifst.read(reinterpret_cast<char*>(&a), sizeof(Class));
			write(reinterpret_cast<char*>(&a), sizeof(Class));
			ifst.read(reinterpret_cast<char*>(&a), sizeof(Class));
		}
		ifst.close();
		ofstream ofst_3("temp.dat");
		ofst_3.close();

	};

да и у меня почему то ничерта не читается ><

Последний раз редактировалось pinkiller; 11.01.2012 в 12:43.
pinkiller вне форума Ответить с цитированием
Старый 11.01.2012, 14:18   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Чтобы удалить все из файла, открывайте его с флагом ios::trunc

Код:
ofstream ofst("temp.dat", ios::out | ios::trunc | ios::binary);
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Временные классы Granus Общие вопросы C/C++ 23 02.06.2011 11:10
Как достать временные файлы из Оперы? Terran Свободное общение 9 04.06.2010 23:45
временные функции Assemblerru Общие вопросы C/C++ 2 04.04.2010 12:43
как удалить временные файлы при onUnload McNikodim JavaScript, Ajax 6 25.11.2008 00:19
Временные задержки dgoc Помощь студентам 1 05.12.2007 05:03