在 C++ 中,你可以使用文件流(例如 std::ifstream
和 std::ofstream
)来检查文件是否存在,并根据条件决定是否覆盖文件
#include<iostream>
#include <fstream>
#include<string>
bool fileExists(const std::string& filename) {
std::ifstream file(filename);
return file.good(); // 如果文件存在且可读,返回 true
}
void writeToFile(const std::string& filename, const std::string& content, bool overwrite) {
if (!overwrite && fileExists(filename)) {
std::cout << "文件已存在,不会覆盖。"<< std::endl;
return;
}
std::ofstream file(filename);
if (file.is_open()) {
file<< content;
file.close();
std::cout << "文件已写入。"<< std::endl;
} else {
std::cout << "无法打开或创建文件。"<< std::endl;
}
}
int main() {
std::string filename = "example.txt";
std::string content = "Hello, World!";
bool overwrite = false; // 设置为 true 以覆盖文件,设置为 false 以避免覆盖
writeToFile(filename, content, overwrite);
return 0;
}
在这个示例中,我们首先定义了一个名为 fileExists
的函数,该函数接受一个文件名参数并检查文件是否存在。接下来,我们定义了一个名为 writeToFile
的函数,该函数接受文件名、要写入的内容以及一个布尔值 overwrite
作为参数。如果 overwrite
为 true
,则函数将始终覆盖文件;如果 overwrite
为 false
,则函数将在文件存在时避免覆盖文件。最后,在 main
函数中,我们调用 writeToFile
函数并传递相应的参数。