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

时间:2013-06-18 09:03:39

标签: c++ path escaping

我使用C ++处理许多文件,我必须在源代码中编写文件名,如下所示: "F:\\somepath\\subpath\\myfile", 我想知道如果有任何方法可以摆脱键入“\\”来在字符串文字上下文中获得字符'\',即,我希望我可以写"F:\somepath\subpath\myfile"而不是无聊的。{/ p>

3 个答案:

答案 0 :(得分:14)

解决方案:

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

  2. 使用带有正斜杠的boost :: path: 他们将验证您的路径并提出问题的例外情况。

    boost::filesystem::path p = "f:/somepath/subpath";
    p /= "myfile";
    
  3. 只需使用正斜杠; Windows应该理解它们。

答案 1 :(得分:4)

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

std::string s = R"F:\somepath\subpath\myfile";

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

std::string s = "F:/somepath/subpath/myfile";

答案 2 :(得分:4)

两个明显的选择:

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

    R"(F:\somepath\subpath\myfile)"