如何在C ++中获取特定于平台的路径分隔符( not 目录分隔符),即组合列表中多个路径所需的分隔符(例如PATH
环境变量)。
在Linux下,这将是:
,位于Windows ;
下。
换句话说,我正在寻找C ++ - 相当于Python的os.pathsep
,Java的path.separator
或PHP的PATH_SEPARATOR
。
如果Boost提供的功能很好,就像我们在项目中使用它一样。如果没有,我猜任何其他解决方案都会很好。
我能找到的所有内容(此处和其他地方)只是检索目录分隔符(即/
与\
)或与C ++以外的其他语言相关的方法。
答案 0 :(得分:6)
根据评论,可能会使用预处理器:
#ifdef _WIN32
const std::string os_pathsep(";");
#else
const std::string os_pathsep(":");
#endif
答案 1 :(得分:4)
除了使用我可以找到的预处理器之外,唯一可移植的方法是通过Apache Portable Runtime:
apr_filepath_list_merge
和
apr_filepath_list_split
您可以查看这些是如何实现的,但我猜它只是一个预处理器定义。