在Windows上使用C++删除文件

4
我正在编写一个C++程序,如果满足某些条件,我希望删除一些已创建的文件。这些文件在每次迭代中都使用类型“string”分配了各种文件名。现在我正在尝试按照它们的文件名删除其中一些文件,但似乎不论是Deletefile函数还是remove函数都无法处理C++字符串。我还尝试将字符串转换为c类型char*,但它并不起作用。
我在Windows 10上使用Visual Studio Community 2015。
是否有方便的方法来解决这个问题?

1
你尝试过在你拥有的std :: string对象上调用c_str()方法吗? - Algirdas Preidžius
尝试使用std::string/std::wstring的c_str()方法来使用DeleteFileA/DeleteFileW。在Unicode字符集中,DeleteFile等同于DeleteFileW,在多字节字符集中等同于DeleteFileA。 - malchemist
1个回答

10

如评论所述 - 函数.c_str()返回与C兼容的字符串,可用于DeleteFileremove

如果这不起作用,我猜测您的应用程序被编译为Unicode,这意味着您必须使用std::wstring而不是std::string

尝试将两种方法结合起来:

std::string fileName = "C://file.txt";
std::wstring wFileName(fileName.begin(),fileName.end());
auto res = DeleteFile(wFileName.c_str());

remove函数使用 "常规" const char*


谢谢。DeleteFile 不起作用。remove 方法可以通过编译,但没有文件被删除。 - 王凯越 Kaiyue Wang
1
我知道问题所在了。我不能在文件流打开的情况下删除文件。现在,因为我使用了.close(),这些文件成功被删除了。非常感谢你们。 - 王凯越 Kaiyue Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接