gpt4 book ai didi

C++ directory_iterator

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:59 27 4
gpt4 key购买 nike

自从我使用 C++ 以来已经有一段时间了,请原谅我的新手问题。

我编写了以下代码来获取目录内容的列表,它运行良好:

for (directory_iterator end, dir("./");
dir != end; dir++) {
std::cout << *dir << std::endl;
}

“*dir”返回什么,一个“字符数组”指针,一个指向“字符串”对象的指针,还是一个指向“路径”对象的指针?

我想将“*dir”(如果它以 .cpp 结尾)传递给另一个 function(),它将在稍后(异步)对其进行操作。我想我需要复制“*dir”。我写了下面的代码:

path *_path;
for (directory_iterator end, dir("./");
dir != end; dir++) {
_path = new path(*dir);
if (_path->extension() == ".cpp") {
function1(_path); // function1() will free _path
} else
free(_path);
}

谢谢,艾哈迈德。

最佳答案

来自documentation of boost::directory_iterator :

The result of operator* on an end iterator is not defined. For any other iterator value a const directory_entry& is returned.

关于函数调用,我觉得最简单的方法是:

using namespace boost::filesystem;

for (directory_iterator end, dir("./"); dir != end; dir++) {
const boost::filesystem::path &this_path = dir->path();
if (this_path.extension() == ".cpp") {
function1(this_path); // Nothing to free
}
}

其中 function1 方法可以声明为:

void function1(const boost::filesystem::path this_path);

关于C++ directory_iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955609/

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