![](/img/trans.png)
[英]How to convert const std::filesystem::directory_entry to tchar?
[英]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.