我在C ++程序中遇到过这一行并且不理解使用“/”的方式或原因。有什么建议吗?
boost :: filesystem :: path pathLockFile = GetDataDir()/“。lock”;
答案 0 :(得分:1)
这是操作员重载的简单情况
对于operator/
类型的对象,path
已经超载
当您在/
个对象上使用boost::filesystem::path
时,它会附加它们。
所以当你写:
boost::filesystem::path pathLockFile = GetDataDir() / ".lock";
它扩展到如下:
boost::filesystem::path pathLockFile = boost::filesystem::path("/tmp/data") / ".lock";
假设GetDataDir()
在{em> Unix / Linux 环境中返回/tmp/data
作为boost::filesystem::path
。在类似Windows的系统中,答案会有所不同。
这进一步扩展到:
boost::filesystem::path pathLockFile = boost::filesystem::path("/tmp/data") / boost::filesystem::path(".lock");
最后,您pathLockFile
持有值/tmp/data/.lock
path operator /(const path& lhs,const path& rhs);
返回:path(lhs)/ = rhs。
路径附加
append操作使用operator / =表示在需要时附加平台首选目录分隔符的语义效果
首选目录分隔符是实现定义的。
/ (正斜杠)separator =>适用于unix变体,Linux和Mac OS X
\ (反斜杠)separator =>用于类似Windows的实现
路径&安培; operator / =(const path& p);
返回:* this