C ++目录搜索

时间:2014-08-13 16:14:25

标签: c++ windows directory

所以我正在尝试编写一个小的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 ++关键字?

如果有任何答案可以完全解释为什么会发生什么事情会很棒,因为我不喜欢使用我不理解的东西。

加上我可能不会遵守的编码标准的任何提示显然会非常感激。

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果你想在Windows中使用DIRENT(unix方法),那么请看这里,优势是跨平台(除了windows之外几乎所有地方都是):

http://www.softagalleria.net/dirent.php

如果您想使用Windows API:

How to check if directory exist using C++ and winAPI

答案 1 :(得分:0)

对于便携式(跨多平台)文件管理系统,您可以使用boost::filesystem

对于相对初学者来说,文档可能看起来有点复杂但是他们可能会给你一些例子,让你能够得到你想要的东西,如果你遇到困难,你可以随时回到这里询问具体细节。

使用ifstream时,您的现有代码不正确,{{1}}用于以只读方式打开文件。您不能使用它来打开目录(列出其内容或查看它是否存在)。