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

时间:2019-05-31 07:02:31

标签: c++ file

我正在使用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 个答案:

答案 0 :(得分:2)

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

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

但是,您可以使用更合适的C ++ std::filesystem::remove(来自C ++ 17s filesystem library)来执行相同操作。现在,由于您使用的是Visual Studio 2017,因此std::filesystem不是yet fully implemented,因此必须使用实验版本。要实现相同的目的:

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