В настоящее время я использую что-то вроде:Проверка существования файла в C++
#include <sys/stat.h>
#include "My_Class.h"
void My_Class::my_function(void)
{
std::ofstream my_file;
struct stat file_info;
if (filename_str.compare("")!=0 &&
stat(filename_str.c_str(),&file_info) == 0)
{
my_file.open(filename_str.data(),std::ios::trunc);
//do stuff
my_file.close();
}
else if (filename_str.compare("")==0)
{
std::cout << "ERROR! ... output filename not assigned!" << std::endl;
}
else
{
std::cout << "ERROR! File :" << std::endl
<< filename_str << std::endl
<< "does not exist!!" << std::endl;
}
}
... это достойный путь, или есть лучшая альтернатива? Кажется, я мог бы запускать полномочия, если у меня нет прав на чтение файла.
Это НЕ домашнее задание, вопрос, это вопрос о лучшей практике.
Следуйте за мантрой «Держите это просто ..». Если ваш код выглядит сложным или не простым, скорее всего это так. –
Итак, просто используйте простой блок try {} catch? –
Я пробовал этот код ... http://www.java2s.com/Tutorial/Cpp/0240__File-Stream/Readafileintrycatchblock.htm .... но когда файл не существует, мой исполняемый файл продолжает сбрасывать пустые строки на мой Терминал. Идеи, почему этот пример не сработал? Я буквально скопировал и вложил его в файл main.cc и просто запускал g ++ без флагов на нем и запускал результирующий исполняемый файл. –