繁体   English   中英

如何为字符串分配boost :: filesystem :: directory_entry :: path()值?

[英]How can I assign boost::filesystem::directory_entry::path() value to a string?

我正在尝试编写一种算法,该算法以递归方式遍历目录,并将每个文件夹,子文件夹和文件名与用户定义的regex对象进行比较。

我在迭代部分找到了这段代码:

path p(FilePath);
for (directory_entry& x : recursive_directory_iterator(p))
    std::cout << x.path() << '\n';

其中Filepath是用户在运行时定义的目录路径。

在控制台上打印出路径非常有用,但是我无法找到一种使用path()来完成所需操作的方法,即将其值分配给一个字符串,然后将该字符串与我的regex对象进行比较。

我一直在看boost :: filesystem :: directory_entry中的其他成员函数,但到目前为止我还没有真正的运气。

有人能指出我正确的方向吗?

谢谢。

编辑:

我很笨

在控制台上打印出路径非常有用,但是我无法找到一种使用path()来完成所需操作的方法,即将其值分配给一个字符串,然后将该字符串与我的regex对象进行比较。

boost :: path具有一个字符串成员,该成员要么转换为字符串类型,要么返回对基础存储机制的const引用(通常为std :: string)( 请参见boost path文档 )。 因此,只需调用:

x.path().string()

另外,您可能想在for循环后面添加一些括号:

path p(FilePath);
std::string temppath;
for (directory_entry& x : recursive_directory_iterator(p))
{
    temppath = x.path().string();
    std::cout << temppath << std::endl;
}

结构化代码std :: cout的方式不会作为循环的一部分被调用,而只是在循环完全完成之后才出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM