我有一个目标路径和一个文件名作为字符串,我想用c ++连接它们。
有没有办法做到这一点,让程序/编译器在/和\之间为windows或unix系统选择?
答案 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
。