Поэтому я пытаюсь написать небольшую C++ программу, чтобы проверить, существует ли каталог на платформе Windows (я знаю, что другие языки более подходят для такого типа использования, но я хочу сделать это в C++ ]).
Это то, что я до сих пор (он компилирует):
std::string DirectorySelector::SpecifyDirectory(void)
{
std::cout << "Enter directory for file renaming: ";
std::cin >> directory;
if (ValidateDirectory(directory) == 1) { SpecifyDirectory(); }
else { return directory; }
}
int DirectorySelector::ValidateDirectory(std::string directory)
{
error = "Error 01: Directory not found.";
std::ifstream fin (directory);
if (!fin)
{
std::cerr << error << "\n\n";
fin.close();
return 1;
}
else
{
fin.close();
return 2;
}
}
Поэтому, очевидно, я сейчас прошу пользователя ввести желаемый каталог в виде строки, не уверен, что это разумный выбор?
Я немного исследовал, имеют ли папки (каталоги) Windows расширение, но это не так.
Я предполагаю, что у меня отсутствует что-то очевидное, например, предопределенное ключевое слово C++ для использования где-то?
Если какие-либо ответы могут быть полностью объяснены в отношении того, что происходит, это будет фантастично, поскольку я не люблю использовать вещи, которые я не понимаю.
Плюс любые советы, связанные с стандартами кодирования, которые я, возможно, не придерживаюсь, несомненно, будут высоко оценены.
Заранее спасибо.
Если вы хотите использовать DIRENT (метод unix) в окнах, посмотрите здесь, преимущество кросс-платформы (dirent почти везде, кроме окон):
http://www.softagalleria.net/dirent.php
Если вы хотите использовать Windows API для этого:
Для портативной (на многих платформах) системы управления файлами вы можете использовать boost :: filesystem
Документация может выглядеть немного сложной для относительного новичка, но они, вероятно, дают вам примеры, которые позволят вам продолжать то, что вы хотите, и если вы застряли, вы всегда можете вернуться сюда и задать специфику.
Ваш существующий код неверен при использовании ifstream
который используется для открытия файла только для чтения. Вы не можете использовать это, чтобы открыть каталог (чтобы просмотреть его содержимое или посмотреть, существует ли он).