Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 20.09.2012
Сообщений: 30
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый день.

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

Работаю с файлами с помощью 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"); // по идее должен создаться, раз его нет, но не создается
Но файл не создается. Ни с тем же названием, ни с каким-то другим.

Вот и скажите, пожалуйста - нормальны способ я выбрал, чтобы очистить файл?
И почему он не работает)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2012, 15:26
Ответы с готовыми решениями:

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

Удалить из файла f числа, которые входят в файл g более двух раз, если таких чисел нет, то создать новый файл
Даны целочисленные файлы f и g. Удалить из файла f числа, которые входят в файл g более двух раз,...

Как создать/удалить файл на сайте?
Приветствую всех. Вот есть у меня админ-панель, мне нужно 2 кнопки Одна: создаёт файл с...

Можно ли на javascript создать или удалить файл?
можно ли на javascript создать или удалить файл? и если можно то как?

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

Другое дело можно очистить содержимое файла.
Но у меня возникает встречный вопрос - как это сделать? Потому я сам не знаю как
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.09.2012, 16:01 3
kotleta, http://www.cplusplus.com/refer... io/remove/

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

или это как-то можно через потоки организовать?
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
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"); //перезапись
}
1
44 / 44 / 17
Регистрация: 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 работает
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.09.2012, 16:49 8
Цитата Сообщение от kotleta Посмотреть сообщение
а почему если я делаю
Цитата Сообщение от kotleta Посмотреть сообщение
То у меня содержимое файла перезаписывается?

Не по теме:

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


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

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

я про ofstream
0
5498 / 4893 / 831
Регистрация: 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?
Смысл в том, что курсор, после открытия, в конце.
3
44 / 44 / 17
Регистрация: 13.09.2012
Сообщений: 196
25.09.2012, 17:07 11
alsav22, тогда почему ofstream ("f",ios::out | ios::app);

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

Добавлено через 2 минуты
курсор открытия в конце
тогда я вообще ничего не понимаю, если файл пустой, зачем ставить курсор на конец, ведь там и так пусто? Разве это не одно и то же: курсор в начале, курсор в конце, если файл пустой, если символов в нем нет?
0
5498 / 4893 / 831
Регистрация: 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, а когда нет.
1
1 / 1 / 0
Регистрация: 20.09.2012
Сообщений: 30
25.09.2012, 17:13  [ТС] 13
Цитата Сообщение от Jupiter Посмотреть сообщение
kotleta, http://www.cplusplus.com/refer... io/remove/


открой файл на запись, если такой файл существует его содержимое будет перезаписано
А он и открыт на запись. Но если в файле например Hello world, а я запишу туда 1111, то будет 1111o world. А нужно чтобы было 1111
1
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
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"); //файл перезаписан
    }
}
1
1 / 1 / 0
Регистрация: 20.09.2012
Сообщений: 30
27.09.2012, 01:29  [ТС] 15
Пробую через open - не открывается. Как у вас не могу, переменная является полем в моем классе. Нужно закрыть перед открытием. Но в этом нет смысла, он уже открыт.

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

Добавлено через 11 минут
p.s. решил это применив fopen, но конечно не очень хороший стиль совмещать работу с файлами через объекты-потоки (fstream) и fopen, которая по-моему от простого C осталась.
0
27.09.2012, 01:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2012, 01:29
Помогаю со студенческими работами здесь

Создать/удалить пустой файл 1.txt на html
Подскажите код кнопок чисто на html без php чтобы просто создать и удалить файл 1.txt Можно с...

Создать файл и удалить его по истечении 20 минут
Здравствуйте, мне необходимо создать файл (текстовые, бинарный - не важно ) для сохранения в нем...

Как создать и удалить темповый файл одной командой?
Как создать и удалить темповый файл одной командой в cmd?

Немогу удалить или создать файл на внешнем HDD
Добрый день, столкнулся с проблемой, не могу удалять или создавать файл на внешнем HDD. Права...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru