gpt4 book ai didi

c++ - 如何将 boost::filesystem::directory_entry::path() 值分配给字符串?

转载 作者:行者123 更新时间:2023-11-30 05:32:18 25 4
gpt4 key购买 nike

我正在尝试编写一种算法,通过目录递归迭代并将每个文件夹、子文件夹和文件名与用户定义的正则表达式对象进行比较。

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

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

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

在控制台上打印出路径效果很好,但我想不出一种方法来使用 path() 来做我想做的事情,也就是将它的值赋给一个字符串,然后将该字符串与我的正则表达式对象。

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

谁能指出我正确的方向?

谢谢。

编辑:

我很笨

最佳答案

It works great to print out paths on the console, but I can't figure out a way to use path() to do what I want, which would be to assign its value to a string and then compare that string to my regex object.

boost::path 有一个字符串成员,它要么执行到字符串类型的转换,要么返回对底层存储机制(通常是 std::string)(see boost path documentation)的常量引用。因此,只需调用:

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 不会作为循环的一部分被调用,而是仅在循环完全完成后才被调用...经典错误!!!

关于c++ - 如何将 boost::filesystem::directory_entry::path() 值分配给字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35176387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com