无法删除 c++ 中具有完整路径的文件

Unable to delete file with complete path in c++

本文关键字:路径 文件 删除 c++      更新时间:2023-10-16

我正在使用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文件,因此权限没有问题。我该如何解决这个问题。谢谢

您的问题是std::remove期望 C 字符串 ( const char * (。您可以使用 std::string 中的 c_str() 方法。

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

但是,您可以使用更合适的C++ std::filesystem::remove (来自 C++17s 文件系统库(来执行相同的操作。现在,由于您使用的是Visual Studio 2017,因此std::filesystem尚未完全实现,您必须使用实验版本。要完成相同的操作:

#include <filesystem>
// ...
std::experimental::filesystem::remove(file);