Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Neumann1
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 30
#1

удалить и создать файл - C++

25.09.2012, 15:26. Просмотров 1993. Ответов 14
Метки нет (Все метки)

Добрый день.

У меня вопрос.

Работаю с файлами с помощью fstream.
Всё разобрался с ним, но не пойму как удалить и тут же создать файл. Ну это как бы очищаю)

Пробую так

C++
1
2
3
4
5
6
7
8
9
10
11
12
fstream fstm;
 
fstm.open("textfile.txt");
 
// работаю с файлом
 
// чтобы "очистить"...
fstm.close();
 
std::remove("textfile.txt");
 
fstm.open("textfile.txt"); // по идее должен создаться, раз его нет, но не создается
Но файл не создается. Ни с тем же названием, ни с каким-то другим.

Вот и скажите, пожалуйста - нормальны способ я выбрал, чтобы очистить файл?
И почему он не работает)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 15:26     удалить и создать файл
Посмотрите здесь:

fstream удалить/создать файл - C++
Подскажите как с помощью библиотека fstream можно создать/удалить файл ?

Файл: Создать файл и записать в него обратные натуральные числа 1,1/2,...1/n. - C++
Помогите подготовиться к отчету.Создать файл и записать в него обратные натуральные числа 1,1/2,...1/n.Вывести на экран все компоненты...

Создать файл с квадратной матрицей; чётные элементы переместить в один файл, нечётные - в другой - C++
• Создать файл с массивом А. • Четные элементы переместить в файл А • Нечетные элементы переместить в файл В Не могу понять Как...

Есть файл f, c целыми числами. Создать новый файл g где все компоненты файла f в квадрате. - C++
Помогите пожалуйста на завтра!:'( Есть файл f, c целыми числами. Создать новый файл g где все компоненты файла f в квадрате. Заранее...

Дан файл,компонентами его яв-ся числа.Число компонент делится на 2.Создать новый файл,куда будет записываться наименьшее из каждой пары чисел 1 файла - C++
#include "fsteam" #include "iomanip" using namespace std; int main() {ifstream in("f.txt"); ofstream out("g.txt"); int i; ...

Динамически создать и удалить vector - C++
Доброго времени суток у меня имеется двумерный vector объектов класса,добавляю туда элементы создавая одномерный veсtor и push_back к...

Как удалить файл? - C++
есть программа которая создает список персонала, проблема заключается в том что созданные файлы не удаляются через программу. я использовал...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 15:56     удалить и создать файл #2
По-моему алгоритм remove не предназначен для удаления файла.
Да и я думаю в С++ нет средств для удаления файлов из внешней среды.
Для этого нужны расширения.

Другое дело можно очистить содержимое файла.
Но у меня возникает встречный вопрос - как это сделать? Потому я сам не знаю как
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.09.2012, 16:01     удалить и создать файл #3
kotleta, http://www.cplusplus.com/reference/c...cstdio/remove/

Цитата Сообщение от Neumann1 Посмотреть сообщение
Ну это как бы очищаю)
открой файл на запись, если такой файл существует его содержимое будет перезаписано
Neumann1
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 30
25.09.2012, 16:03  [ТС]     удалить и создать файл #4
Всё удаляется прекрасно - remove работает как надо. Но вновь не создается так как я пытаюсь
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 16:21     удалить и создать файл #5
Jupiter , вы имеете в виду использовать функцию fopen("filename","w")??

или это как-то можно через потоки организовать?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.09.2012, 16:29     удалить и создать файл #6
kotleta, можно и через fopen, но лучше не смешивать
C++
1
2
3
4
5
6
7
{
    std::fstream file("textfile.txt");
    // работа с файлом
}
{
    std::ofstream file("textfile.txt"); //перезапись
}
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 16:38     удалить и создать файл #7
C++
1
Jupiter
а почему если я делаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// fstream::open
#include <fstream>
using namespace std;
 
int main () {
 
    std::ofstream file("textfile.txt",ios_base::out | ios_base::ate);
 
file << "11111";
 
 file.close();
 
  return 0;
}
То у меня содержимое файла перезаписывается?

хотя

cplusplus.com

ate (at end) Set the stream's position indicator to the end of the stream on opening.
Добавлено через 27 секунд
хотя app работает
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.09.2012, 16:49     удалить и создать файл #8
Цитата Сообщение от kotleta Посмотреть сообщение
а почему если я делаю
Цитата Сообщение от kotleta Посмотреть сообщение
То у меня содержимое файла перезаписывается?

Не по теме:

"почему небо голубое а трава зеленая?"


поместить указатель в конец, дополнить и перезаписать это 3 разных операции
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 16:57     удалить и создать файл #9
Хорошо, а тогда смысл ios_base::ate?
При открытии файла установили указатель в конец, а потом файла стирается.

Добавлено через 37 секунд
вернее содержимое файла

я про ofstream
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2012, 17:03     удалить и создать файл #10
Цитата Сообщение от kotleta Посмотреть сообщение
а почему если я делаю
Режим открытия файла запись, поэтому и стирается. Чтобы с ate не стиралось, открывайте, нипример, так:
C++
1
fstream f ("file.txt", ios::in | ios::out | ios::ate);
Или так, но чтения не будет, но и данные не сотрутся:
C++
1
ofstream f ("file.txt", ios::in | ios::out | ios::ate);
Добавлено через 4 минуты
Цитата Сообщение от kotleta Посмотреть сообщение
Хорошо, а тогда смысл ios_base::ate?
Смысл в том, что курсор, после открытия, в конце.
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 17:07     удалить и создать файл #11
alsav22, тогда почему ofstream ("f",ios::out | ios::app);

НЕ стирает содержимое?

Добавлено через 2 минуты
курсор открытия в конце
тогда я вообще ничего не понимаю, если файл пустой, зачем ставить курсор на конец, ведь там и так пусто? Разве это не одно и то же: курсор в начале, курсор в конце, если файл пустой, если символов в нем нет?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2012, 17:11     удалить и создать файл #12
Цитата Сообщение от kotleta Посмотреть сообщение
alsav22, тогда почему ofstream ("f",ios::out | ios::app);

НЕ стирает содержимое?
Потому что ios::app так сделан. Но запись только в конец, в произвольное место, при таком режиме открытия, запись не сделать, а если с ios::ate открыть, то можно запись в произвольное место делать.

Добавлено через 1 минуту
Цитата Сообщение от kotleta Посмотреть сообщение
Разве это не одно и то же: курсор в начале, курсор в конце, если файл пустой, если символов в нем нет?
Если пустой, то да. Но ios::ate применяется не только к пустым файлам. Просто нужно смотреть, когда имеет смысл использовать ios::ate, а когда нет.
Neumann1
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 30
25.09.2012, 17:13  [ТС]     удалить и создать файл #13
Цитата Сообщение от Jupiter Посмотреть сообщение
kotleta, http://www.cplusplus.com/reference/c...cstdio/remove/


открой файл на запись, если такой файл существует его содержимое будет перезаписано
А он и открыт на запись. Но если в файле например Hello world, а я запишу туда 1111, то будет 1111o world. А нужно чтобы было 1111
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.09.2012, 17:29     удалить и создать файл #14
Цитата Сообщение от Neumann1 Посмотреть сообщение
А он и открыт на запись
еще раз открой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream>
 
int main()
{
    {
        std::ofstream file("1.txt");
        file << "hello world";
    }
 
    {
        std::ofstream file("1.txt"); //файл перезаписан
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2012, 01:29     удалить и создать файл
Еще ссылки по теме:

Как удалить файл? - C++
Создал файл text.txt и хочу удалить его програмно... Но функция remove() не работает. Может кто знает в чем дело... Вот код:#include...

Как удалить определенный файл? - C++
Здравствуйте, я в С++ начинающий &quot;программист&quot;:) Скажите пожалуйста, как правильно написать программу, чтобы она удаляла допустим...

Как удалить файл программой - C++
Если можно приведите пример программы.

Как закрыть и удалить файл? - C++
Здравствуйте, помогите пожалуйста, у меня есть строка name_txt(string) где прописан путь к txt файлу который надо закрыть(если открыт) и...

Как удалить файл в корзину? - C++
Удаляю файлы при помощи DeleteFile(). При этом файлы удаляются, не попадая в Корзину. Как удалять файлы в корзину? Спасибо всем, кто...


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

Или воспользуйтесь поиском по форуму:
Neumann1
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 30
27.09.2012, 01:29  [ТС]     удалить и создать файл #15
Пробую через open - не открывается. Как у вас не могу, переменная является полем в моем классе. Нужно закрыть перед открытием. Но в этом нет смысла, он уже открыт.

Надо закрыть, удалить, создать, открыть созданный.
Вот не пойму как создать.

Добавлено через 11 минут
p.s. решил это применив fopen, но конечно не очень хороший стиль совмещать работу с файлами через объекты-потоки (fstream) и fopen, которая по-моему от простого C осталась.
Yandex
Объявления
27.09.2012, 01:29     удалить и создать файл
Ответ Создать тему
Опции темы

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