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

How to disable the escape sequence in C++

本文关键字:转义序列 c++      更新时间:2023-10-16

我使用c++来处理很多文件,我必须在源代码中这样写文件名:"F:\somepath\subpath\myfile",我想知道是否有任何方法可以摆脱输入"\"来在字符串文本上下文中获得字符"",也就是说,我希望我可以只写"F:somepathsubpathmyfile"而不是无聊的那个。

解决方案:

  1. 使用c++ 11字符串字量:R"(F:somepathsubpathmyfile)"

  2. 使用boost::path和正斜杠:它们将验证您的路径,并在出现问题时引发异常。

    boost::filesystem::path p = "f:/somepath/subpath";
    p /= "myfile";
    
  3. 使用正斜杠;

两个明显的选择:

  1. Windows理解正斜杠(或者更确切地说,它将它们转换为反斜杠);
  2. c++ 11有原始字符串字面值。里面的内容不需要转义。

    R"(F:somepathsubpathmyfile)"
    

从c++ 11开始,您可以使用原始字符串字面值(更多详细信息请参阅字符串字面值):

std::string s = R"(F:somepathsubpathmyfile)";

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

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