如何检查文件是否已存在于 fstream C++ 中
How to check if a file is already present in fstream C++
我一直在使用 fstream 编写代码来创建一个具有特定编号的文件,现在我想让 mmy 程序检查每当创建新条目时该条目的名称是否已被使用, TIA 为您提供所有帮助。
我试过按照所附代码自己做,但我不确定它是否正常工作。
目的是检查文件是否已经创建,如果是,则会给出错误,否则会提示用户继续创建新文件。
cout<<"Enter your NIC or Form B number: ";
cin.ignore();
gets(det.nic);
entries.open(det.nic, ios::out);
if (!entries)
{
cout<<setw(70)<<"\nYou've already availed the fund!\n";
system("pause");
system("cls");
goto m;
}
else
{
如果你只需要检查一个文件是否存在而不实际使用它,你可以使用 <filesystem>
库如果你的编译器支持它。它提供了一个 exists()
功能,可以在不打开文件的情况下执行此操作。
#include <filesystem>
namespace fs = std::filesystem;
if (fs::exists(file_path)) {
std::cout << "File already exists!\n";
}
您可以使用 std::ifstream("filename").good()
.
额外提示:关于您对问题的描述(创建一个不存在的文件),请查看竞争条件。
我一直在使用 fstream 编写代码来创建一个具有特定编号的文件,现在我想让 mmy 程序检查每当创建新条目时该条目的名称是否已被使用, TIA 为您提供所有帮助。 我试过按照所附代码自己做,但我不确定它是否正常工作。 目的是检查文件是否已经创建,如果是,则会给出错误,否则会提示用户继续创建新文件。
cout<<"Enter your NIC or Form B number: ";
cin.ignore();
gets(det.nic);
entries.open(det.nic, ios::out);
if (!entries)
{
cout<<setw(70)<<"\nYou've already availed the fund!\n";
system("pause");
system("cls");
goto m;
}
else
{
如果你只需要检查一个文件是否存在而不实际使用它,你可以使用 <filesystem>
库如果你的编译器支持它。它提供了一个 exists()
功能,可以在不打开文件的情况下执行此操作。
#include <filesystem>
namespace fs = std::filesystem;
if (fs::exists(file_path)) {
std::cout << "File already exists!\n";
}
您可以使用 std::ifstream("filename").good()
.
额外提示:关于您对问题的描述(创建一个不存在的文件),请查看竞争条件。