13

我想遍历目录中的所有文件并打印它们的内容。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);
    }

我试图阅读此文档,但找不到类似stringor的内容c_str()。我对两者都是新手,C++并且boost希望找到一些javadoc类似的文档,这些文档基本上可以告诉我成员是什么以及可用的功能,而不是转储源代码。

很抱歉咆哮,但有人可以告诉我如何转换*path_itc string.

4

2 回答 2

25

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

const directory_entry& entry = *path_it;

正如您所发现的,您可以将它与operator<<and一起使用: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();
于 2013-05-01T13:10:22.320 回答
1

在查看文档后,我认为您可以这样做,path_it->path().c_str()因为directory_iterator迭代directory_entry具有path()函数,而函数又具有c_str()函数。

于 2013-05-01T12:21:01.920 回答