如何在c ++中生成OS独立路径

时间:2009-06-29 02:43:15

标签: c++ cross-platform filesystems

我有一个目标路径和一个文件名作为字符串,我想用c ++连接它们。

有没有办法做到这一点,让程序/编译器在/和\之间为windows或unix系统选择?

4 个答案:

答案 0 :(得分:7)

通常情况下,Boost有一个可以满足您需求的库。 Here是一个教程。

答案 1 :(得分:7)

如果您想在编译时执行此操作,您当然可以执行类似

的操作
#ifdef WIN32
#define OS_SEP '\\'
#else
#define OS_SEP '/'
#endif

或者你可以使用'/'并且在Windows上可以正常工作(除了解析字符串的旧程序并且只能使用'\')。如果以这种方式向用户显示,它看起来很有趣。

答案 2 :(得分:2)

在任何地方内部使用'/'。然后编写一组实用函数,将任一形式的路径导入到使用'/'。编写一个“本机路径”功能,该功能具有系统特定的ifdef和必要的转换。可以按需调用。

答案 3 :(得分:1)

做一个简单的方法就是让一个小的(可能是内联的)函数使用预处理器魔法来确定平台(#ifdef WIN32等)并返回相应的分隔符。

答案有点复杂,因为除了分隔符之外还有其他更重要的差异。 Windows文件系统可以有多个根(C:\,D:\等),而整个FS根植于Unix-land。

最好的建议可能是使用boost::filesystem