Удалить файл без подтверждения с++

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

 namespace fs = std::filesystem;
 using namespace std;
 int main()
 {
 fs::remove("c:/temp/1.txt");
 }

Выдает ошибку при выполнении.


Ответы (1 шт):

Автор решения: Alexey Vesker

Исходя из вашего ответа в комментарии и судя по пути к удаляемому файлу все становится более менее ясно. Вы пишите приложение под windows и согласно документации на этой платформе fs::remove вызывает WinAPI функцию DeleteFileW. В описании которой сказано, что она не может удалить файл, предназначенный только для чтения, и перед этим необходимо снять этот флаг с файла. Используя стандартную библиотеку плюсов, сделать это можно так:

int main()
{
//Даем права на чтение/выполнение/запись файла всем пользователям
 fs::permissions("c:/Temp/1.txt", fs::perms::all);
//Удаляем файл
 fs::remove("c:/temp/1.txt");
}
→ Ссылка