我有一个应该在 windows 和 unix 系统(Mac、linux 等)上运行的代码,我想访问/删除相对路径中的一些文件,有没有一种方法可以构建路径兼容两种操作系统(如 Java 的 File.separator
)?
我想到的最接近的事情是这样的:
#ifdef _WIN32
#define FILE_SEPARATOR "\\"
#else
#define FILE_SEPARATOR "/"
#endif
//in windows - ".\\filedir\\filename.txt"
//in *nix - "./filedir/filename.txt"
const char * mypath = "." FILE_SEPARATOR "filedir" FILE_SEPARATOR "filename.txt";
编辑
阅读下面的答案/评论后 - 我想补充一点,确认 Windows XP 或更新版本符合 POSIX 对我来说就足够了。
最佳答案
Windows 支持符合 POSIX 标准的路径分隔符。
这意味着您可以在构建路径和使用 Windows API 或 C IO 函数时安全地使用正斜杠 /
。
但是,如果您的代码充当一个库并公开一个接受和返回路径的 API,您可能必须对输入路径进行 posixify 并取消对返回路径的 posixify。这会增加一点负担,但会让您的消费者感觉更原生。
关于c - Windows 和 Unix 的文件分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881806/