Невозможно удалить файл с полным путем в C ++ - PullRequest
0 голосов
/ 31 мая 2019

Я использую visual studio 2017 и работаю в C ++.У меня есть код, где я беру некоторый ввод от пользователя и на основе этого я пытаюсь удалить файл.

auto ver = FLAGS_ver;  // taking input from the user

string file = "C:\\Program Files(x86)\\data_" + ver + "\\output\\output.json";

std::ofstream output_file(outputFile);

В основном ver - это число, на основе которого осуществляется доступ к этому конкретному каталогу.Таким образом, окончательное значение string file становится:

C:\\Program Files(x86)\\data_209\\output\\output.json

Поэтому мне нужно удалить указанный выше файл, для которого я использую приведенную ниже команду:

int res = remove(file);

Но ниже отображается ошибка:

Error (active)  E0304   no instance of overloaded function "std::remove" matches the argument list

Error   C2664   'int remove(const char *)': cannot convert argument 1 from 'std::string' to 'const char *'

Я могу записать в этот файл JSON, поэтому нет проблем с разрешением.Как я могу решить это.Спасибо

1 Ответ

2 голосов
/ 31 мая 2019

Ваша проблема std::remove ожидает C-строка (const char *).Вы можете использовать метод c_str() из std::string.

int res = remove(file.c_str());

Однако вы можете использовать более подходящий C ++ std :: filesystem :: remove (из C ++ 17s библиотека файловой системы ), чтобы сделать то же самое.Теперь, поскольку вы используете Visual Studio 2017, std::filesystem не был , но полностью реализован , и вам придется использовать экспериментальную версию.Для достижения того же:

#include <filesystem>
// ...
std::experimental::filesystem::remove(file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...