9

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

在 Linux 下,这将是:, 在 Windows 下;

换句话说,我正在寻找 Python os.pathsep、 Javapath.separator或 PHP 的C++ 等效项PATH_SEPARATOR

如果 Boost 提供这样的功能就好了,因为无论如何我们都在项目中使用它。如果没有,我想任何其他解决方案都会很好。

我所能找到的(在这里和其他地方)要么只是检索目录分隔符的方法(即/vs. \),要么与 C++ 以外的其他语言相关。

4

2 回答 2

6

根据评论,一种可能是使用预处理器:

#ifdef _WIN32
const std::string os_pathsep(";");
#else
const std::string os_pathsep(":");
#endif
于 2012-05-09T11:02:44.753 回答
4

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

apr_filepath_list_mergeapr_filepath_list_split

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

于 2012-05-09T10:39:27.090 回答