ostream_iterator 为字符串而不是 cout?

Aar*_*ron 1 c++ boost cout copy

有人刚刚帮助我使用 boost 从目录中获取文件名

    if (exists(p))    // does p actually exist?
    {

        if (is_directory(p))      // is p a directory?
        {
            copy(directory_iterator(p), directory_iterator(), // directory_iterator::value_type
                ostream_iterator<directory_entry>(cout, "\n")); // is directory_entry, which is

        }
    }
Run Code Online (Sandbox Code Playgroud)

但我希望它是一个字符串而不是 cout

我怎样才能捕获该副本?

0x4*_*2D2 5

您可以将内容复制到 astd::ostringstream并使用以下命令检索缓冲区的副本str()

std::ostringstream buf;

std::copy(directory_iterator(p), directory_iterator(),
          std::ostream_iterator<directory_entry>(buf, "\n"));

std::string content(buf.str());
Run Code Online (Sandbox Code Playgroud)