c ++文件系统系统找不到指定的路径

时间:2019-11-29 10:13:57

标签: c++ path iterator

真正的问题在哪里? 此路径存在,但是程序失败。

我想知道这个问题的原因吗?

enter image description here

    const std::filesystem::directory_options options = (
    std::filesystem::directory_options::follow_directory_symlink |
    std::filesystem::directory_options::skip_permission_denied
    );

try
{
    for (const auto& dirEntry :
        std::filesystem::recursive_directory_iterator("C:\\Users\\myuser",
            std::filesystem::directory_options(options)))
    {

        std::cout << dirEntry.path().generic_string() << std::endl;


    }

}
catch (std::filesystem::filesystem_error & fse)
{
    std::cout << fse.what() << std::endl;
}
  

C:/ Users / myuser / Contacts / {857B728B-5B31-4F94-B832-522DF52E4335} /VertiPaq_68547BCEF3A344CDA3CE/724C7FC1B3284E4BBE1C.3.db/Model.193.cub/Cuentas por Cobrar_f7776b1c1d1d1d1d1d-f7776b2c1d1d-d1e2d-d-f7776b2c1d1d-e1d-c-d561-c1d2d1e1d-d-f7776b1c-d1d2d-d-f7776b1c-d1d2d-d-f7776b1c-d1d2e1d-d-f7776b1c-d1d1d-c7d3d-f1c2880d1d-ea17-400-c 92.det / Cuentas por Cobrar_f7776207-ea17-4002-8801-3561d1b2d1fc.23.prt   recursive_directory_iterator :: operator ++:系统找不到指定的路径。

1 个答案:

答案 0 :(得分:3)

问题可能是std::filesystem只能是实现实际文件系统的可移植抽象。根据您的路径,我假设您正在使用Microsoft Windows。

因此,问题很明显:您的路很长:它的260个可见字符以及不可见的结束符/空值/终止符。这比MAX_PATHsee this documentation.

  

在Windows API中(以下讨论的一些例外)   段落),路径的最大长度为MAX_PATH,即   定义为260个字符。本地路径按以下顺序构造:驱动器号,冒号,反斜杠,用反斜杠分隔的名称组成部分以及终止的空字符。