答案是使用std::remove函数可跨平台删除文件。该函数定义于<cstdio>,成功返回0,失败返回非零值,可结合文件存在性检查避免误报,Windows下也可用_unlink或DeleteFile进行更底层操作,但推荐优先使用std::remove以保证可移植性。

在C++中删除文件可以通过调用标准库中的 std::remove 函数来实现。这个函数不仅可用于删除普通文件,也可以用于删除空的目录(某些系统上可能不支持通过 remove 删除目录)。它定义在 <cstdio> 头文件中。
使用 std::remove 删除文件
std::remove 是最简单且跨平台兼容性较好的方式。其函数原型如下:
int remove(const char *filename);如果删除成功,返回 0;失败则返回非零值。
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>#include <cstdio>
int main() {
const char* filename = "test.txt";
if (std::remove(filename) == 0) {
std::cout << "文件删除成功。\n";
} else {
std::cout << "删除失败,可能文件不存在或正在被使用。\n";
}
return 0;
}
检查文件是否存在再删除
为避免误报错误,可以在删除前先判断文件是否存在。虽然 std::remove 本身在文件不存在时会失败,但你可以用 std::ifstream 尝试打开文件来预判:
bool fileExists(const char* filename) {
std::ifstream file(filename);
return file.good();
}
然后结合使用:
if (fileExists("test.txt")) {if (std::remove("test.txt") == 0) {
std::cout << "文件已删除。\n";
} else {
std::cout << "删除失败。\n";
}
} else {
std::cout << "文件不存在。\n";
}
Windows 平台额外选项:_unlink 和 DeleteFile
在 Windows 系统中,还可以使用 _unlink(声明在 <io.h>):
#include <io.h>或者使用 Win32 API:
#include <windows.h>DeleteFile("test.txt"); // 成功返回 TRUE
这种方式更底层,适合需要精确控制权限或处理只读文件等场景。
基本上就这些常用方法。推荐优先使用 std::remove,简洁且可移植性强。










