Одним из способов было бы сделать stat()
и проверить errno
.
Пример кода будет выглядеть так:
#include <sys/stat.h>
using namespace std;
// some lines of code...
int fileExist(const string &filePath) {
struct stat statBuff;
if (stat(filePath.c_str(), &statBuff) < 0) {
if (errno == ENOENT) return -ENOENT;
}
else
// do stuff with file
}
Это работает независимо от потока. Если вы все еще предпочитаете проверять, используя ofstream
, просто проверьте, используя is_open()
.
Пример:
ofstream fp.open("<path-to-file>", ofstream::out);
if (!fp.is_open())
return false;
else
// do stuff with file
Надеюсь, это поможет.
Спасибо!