C++ 从递归\u目录\u迭代器中获取字符串

C++ 从递归\u目录\u迭代器中获取字符串,c++,c++17,C++,C++17,我试图使用C++17的从目录中获取所有文件名,并用它们填充向量 我知道如何像这样打印出来: void ShaderManager::LoadFilenames(std::string path) { for (auto& p : fs::recursive_directory_iterator(path)) { std::cout << p << '\n'; } } void ShaderManager::LoadFile

我试图使用C++17的
从目录中获取所有文件名,并用它们填充
向量

我知道如何像这样打印出来:

void ShaderManager::LoadFilenames(std::string path)
{
    for (auto& p : fs::recursive_directory_iterator(path))
    {
        std::cout << p << '\n';
    }
}
void ShaderManager::LoadFilenames(std::string path)
{
for(auto&p:fs::recursive_directory_iterator(path))
{
std::cout试试:


如果
p
recursive\u directory\u iterator
,则
path()
返回,因此它有一个方法返回路径的文件名组件。然后您可以调用该方法以获取字符串形式的路径。

只是吹毛求疵,但在C++17中,它不再是实验性的,而是完全集成为。至于您的问题,请尝试创建一个来向我们展示。请阅读相关内容,以及。我认为您的意思是call调用
filename()
函数.filename
您将函数本身作为对象引用,而不是调用它。最后一个问题的猜测是:您需要调用的函数。还有一个建议:如果字符串是路径,只需使用
path
;这就是它的用途。如果要将
路径
传递给处理该路径的API,则只需将其转换为字符串作为一般字符串(打印、存储在文件中等)。尽可能长时间地将其作为应用程序中的路径。我认为可能需要进行额外的转换,因为它现在不会抛出重载函数“std::vector::push_back[with _Ty=std::string,_Alloc=std::allocator]”的实例符合论点list@DLPDevciorect,编辑
m_ShaderFileNames.push_back(p.path().filename().string());