如何将boost :: filesystem :: directory_iterator转换为const char *

时间:2013-05-01 12:11:12

标签: c++ boost boost-filesystem

我想迭代目录中的所有文件并打印其内容。 Boost非常好地处理迭代部分,但我不知道如何将其转换为const char *

boost::filesystem::directory_iterator path_it(path);
    boost::filesystem::directory_iterator end_it;
    while(path_it != end_it){
      std::cout << *path_it << std::endl;

      // Convert this to a c_string
      std::ifstream infile(*path_it);
    }

我尝试阅读此documentation但无法找到stringc_str()之类的内容。我是C++boost的新手,并且希望找到一些javadoc类似的文档,这些文档基本上会告诉我成员是什么以及可用的功能而不是倾销源代码。

很抱歉咆哮,但有人可以告诉我如何将*path_it转换为c string

2 个答案:

答案 0 :(得分:20)

当您取消引用迭代器时,它会返回directory_entry

const directory_entry& entry = *path_it;

您可以将此与operator<<ostream一起使用,如您所发现:

std::cout << entry << std::endl;

您可以使用ostringstream创建字符串:

std::ostringstream oss;

oss << entry;

std::string path = oss.str();

或者,您可以直接从string

访问路径directory_entry
std::string path = entry.path().string();

答案 1 :(得分:1)

在查看文档后,我认为你可以做path_it-&gt; path()。c_str(),因为一个directory_iterator遍历directory_entry,它有一个路径函数,而这个函数又有一个c_str函数。