如何在C++中禁用转义序列

Zhi*_*hen 4 c++ escaping path

我使用C++来处理许多文件,我必须在源代码中编写文件名,如下所示: "F:\\somepath\\subpath\\myfile"我想知道是否有办法摆脱键入"\\"以在字符串文字上下文中获取字符'\' ,也就是说,我希望我可以写出"F:\somepath\subpath\myfile"无聊的一个.

utn*_*tim 14

解决方案:

  1. 使用C++ 11字符串文字: R"(F:\somepath\subpath\myfile)"

  2. 使用带有正斜杠的boost :: path:它们将验证您的路径并引发问题的异常.

    boost::filesystem::path p = "f:/somepath/subpath";
    p /= "myfile";
    
    Run Code Online (Sandbox Code Playgroud)
  3. 只需使用正斜杠; Windows应该了解它们.


jua*_*nza 5

如果你有 C++11,你可以使用原始字符串文字:

std::string s = R"F:\somepath\subpath\myfile";
Run Code Online (Sandbox Code Playgroud)

另一方面,您可以只对文件系统路径使用正斜杠:

std::string s = "F:/somepath/subpath/myfile";
Run Code Online (Sandbox Code Playgroud)


cHa*_*Hao 5

两个明显的选择:

  1. Windows 理解正斜杠(或者更确切地说,它将它们转换为反斜杠);改用那些。
  2. C++11 具有原始字符串文字。他们里面的东西不需要逃脱。

    R"(F:\somepath\subpath\myfile)"
    
    Run Code Online (Sandbox Code Playgroud)