所以我正在尝试编写一个小的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 ++关键字?
如果有任何答案可以完全解释为什么会发生什么事情会很棒,因为我不喜欢使用我不理解的东西。
加上我可能不会遵守的编码标准的任何提示显然会非常感激。
提前致谢。
答案 0 :(得分:1)
如果你想在Windows中使用DIRENT(unix方法),那么请看这里,优势是跨平台(除了windows之外几乎所有地方都是):
http://www.softagalleria.net/dirent.php
如果您想使用Windows API:
答案 1 :(得分:0)
对于便携式(跨多平台)文件管理系统,您可以使用boost::filesystem
对于相对初学者来说,文档可能看起来有点复杂但是他们可能会给你一些例子,让你能够得到你想要的东西,如果你遇到困难,你可以随时回到这里询问具体细节。
使用ifstream
时,您的现有代码不正确,{{1}}用于以只读方式打开文件。您不能使用它来打开目录(列出其内容或查看它是否存在)。