C++ 实验::文件系统::目录\迭代器和运算符++()

C++ 实验::文件系统::目录\迭代器和运算符++(),c++,c++17,C++,C++17,我正在写一个程序,它把目录中的所有文件名都放在一个数组中。我遇到的问题是运算符++显示错误并且不会增加迭代器。任何帮助都将不胜感激 #include <iostream> #include <string> #include <filesystem> namespace fs = std::experimental::filesystem; int main() { std::cout << "Select a directory :"

我正在写一个程序,它把目录中的所有文件名都放在一个数组中。我遇到的问题是运算符++显示错误并且不会增加迭代器。任何帮助都将不胜感激

#include <iostream>
#include <string>
#include <filesystem>

namespace fs = std::experimental::filesystem;

int main()
{
    std::cout << "Select a directory :";
    std::string path;
    std::cin >> path;
    std::cout << "How many files :";
    int dirFiles;
    std::cin >> dirFiles;
    int i = { 0 };
    std::vector<std::string> fileNames(dirFiles);

    for (auto& p : fs::directory_iterator(path)){
        while (i < dirFiles) {
            fileNames[i] = p.path().string();
            fs::directory_iterator& operator++();
            std::cout << fileNames[i];
            i++;
        }
    }
    system("pause");
    return 0;
}
已经知道如何循环其组成元素。您不需要自己做额外的工作:

std::vector<std::string> fileNames;

for (auto& p : fs::directory_iterator(path)){
    fileNames.push_back(p.path().string());
}

这与C++17无关。C++17在标准库中包含文件系统;您似乎在询问以前的TS。我在没有包含的情况下收到一个错误,它甚至不会读取第一个文件名,这样至少可以读取名称。我还可以将所有文件输出到控制台。在C++17中,您需要在此处链接include.worth