如何在C ++中获取特定于平台的路径分隔符?

时间:2012-05-09 10:23:25

标签: c++

如何在C ++中获取特定于平台的路径分隔符( not 目录分隔符),即组合列表中多个路径所需的分隔符(例如PATH环境变量)。

在Linux下,这将是:,位于Windows ;下。

换句话说,我正在寻找C ++ - 相当于Python的os.pathsep,Java的path.separator或PHP的PATH_SEPARATOR

如果Boost提供的功能很好,就像我们在项目中使用它一样。如果没有,我猜任何其他解决方案都会很好。

我能找到的所有内容(此处和其他地方)只是检索目录分隔符(即/\)或与C ++以外的其他语言相关的方法。

2 个答案:

答案 0 :(得分:6)

根据评论,可能会使用预处理器:

#ifdef _WIN32
const std::string os_pathsep(";");
#else
const std::string os_pathsep(":");
#endif

答案 1 :(得分:4)

除了使用我可以找到的预处理器之外,唯一可移植的方法是通过Apache Portable Runtime:

apr_filepath_list_mergeapr_filepath_list_split

您可以查看这些是如何实现的,但我猜它只是一个预处理器定义。