Как проверить, присутствует ли уже файл в fstream C ++ - PullRequest
0 голосов
/ 28 мая 2020

Я писал код, используя fstream, для создания файла с определенным номером c, теперь я хочу, чтобы программа 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
{

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Если вам нужно только проверить, существует ли файл, не используя его, вы можете использовать библиотеку <filesystem>, если ваш компилятор ее поддерживает. Он предоставляет функцию exists(), которая сделает это, не открывая файл.

#include <filesystem>

namespace fs = std::filesystem;

if (fs::exists(file_path)) {
    std::cout << "File already exists!\n";
}
0 голосов
/ 28 мая 2020

Вы можете использовать std::ifstream("filename").good().

Бонусный совет: Что касается вашего описания проблемы (создайте файл, которого не существует), обратите внимание на условия гонки .

...