Я хотел бы проверить, соответствует ли строка name
файлу, который я могу открыть и прочитать, поэтому он может быть обычным файлом или символической ссылкой.Как проверить, является ли файл обычным файлом или символической ссылкой, используя boost :: filesystem?
я впервые использовал это:
std::ifstream in(name.c_str());
if (!in.is_open()) {
// throw exception!
}
но это не сгенерирует исключение, когда name
упоминается имя каталога.
Теперь я использую это:
if (!fs::exists(name) || fs::is_directory(name)) {
// throw exception!
}
Но это будет (предположительно) не бросать, если это символическая ссылка на каталог. То же самое можно сказать и об этом:
Есть ли лучший способ?