如何将字符串路径从''转换为'/'或"\\"?



我想以编程方式打印包含''的windows风格路径。我们将使用这个字符串递归地列出该目录中的所有文件。出现这个问题只是因为我正在从远程构建服务器上的宏集读取字符串,其中宏路径似乎是用''设置的。然而,结果字符串在c++中是不可用的,因为''之后的任何字符都是一个特殊字符。

基本信息:我有一个不兼容的问题,在我的机器上构建一个项目,而构建服务器可能对一些包含目录有不同的宏。我想打印由项目宏定义的目录的内容,例如$(OpenCVDir)。假设$(OpenCVDir)在这台机器上被定义为"c:opencv"

我发现这样做的一种方法是在预处理器命令OPENCVDIR=$(OpenCVDir)中定义,然后在我的代码中,将其打印出来,因为它在#define中定义,例如

std::cout<< OPENCVDIR;

问题是这个目录使用了windows风格的''作为分隔符,所以它认为所有的分隔符都是特殊字符而失败。

是否有方法将使用''作为分隔符的路径正确转换为'/''\'的路径?

可以使用boost

中的make_preferred和

boost::filesystem::path slash("/");
boost::filesystem::path::string_type preferredSlash = slash.make_preferred().native();

结合Remy和ΦXocę * * Пepeúpa的答案,

  1. 在预处理器命令中定义OPENCVDIR=R"($OpenCVDir)",这样''就会被按字面意思处理,而不是使用转义字符。一旦执行,这个字符串实际上是"c:\opencv"

  2. (可选)使用boost显式转换为'\''/'

    boost::filesystem::path slash(OPENCVDIR);
    boost::filesystem::path::string_type preferredSlash = slash.make_preferred().native();