boost :: filesystem :: path中“/”字符的用途是什么?

时间:2018-06-13 16:52:03

标签: c++ c++11 boost

我在C ++程序中遇到过这一行并且不理解使用“/”的方式或原因。有什么建议吗?

boost :: filesystem :: path pathLockFile = GetDataDir()/“。lock”;

1 个答案:

答案 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

阅读Boost Filesystem and Path

中的文档
  

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