我需要在C ++中的目录中生成一个文件名容器,并且它必须跨平台兼容。有人建议使用WIN32_FIND_DATA数据结构。这是最好的选择吗?如果是的话,我将如何实施呢?

用户不会输入文件名,而是C ++函数将自动搜索目录并创建文件名容器。我也不知道如何读取这样的文件名。

我也非常关注标准,因此<dirent.h>也不是理想的解决方案,因为它不是ISO C标准,即使它是C POSIX库中的标头。

最佳答案

我猜WIN32_FIND_DATA并不是跨平台的最佳选择,但是可能有一些库可以帮助在Linux上提供它。

考虑使用boost filesystem将文件转储到std::vector中。

如下所示(改编自here):

void show_files(const path & directory)
{
  if(!exists(directory)) return;

  directory_iterator end ;
  for( directory_iterator iter(directory) ; iter != end ; ++iter )
    if (is_directory(*iter)) continue;  // skip directories
    cout << "File: " << iter->native_file_string() << "\n" ;
  }
}

关于c++ - 创建一个包含目录中文件名的C++容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3113102/

10-16 10:20