【问题标题】:Why do I have to use double backslashes for file-paths in code?为什么我必须对代码中的文件路径使用双反斜杠?
【发布时间】:2015-02-04 17:52:08
【问题描述】:

在我的程序中,我试图打开一个文件,例如C:\unescaped\backslashes.txt,但它无法打开!为什么?

这是什么?

这是常见问答集。这也是一个社区 Wiki,因此邀请所有人参与维护它。

这是为什么?

网站中有很多问题归结为 OP 不知道他/她需要在源代码的文件路径中转义反斜杠。问题通常是“为什么我的程序不起作用?”或“为什么找不到文件?”,在源代码的某处会出现:

const char *fileName = "C:\unescaped\backslashes.txt";

范围是多少?

此问题适用于 C、C++、Java、Python 和编译器将反斜杠视为转义字符的其他语言。

元帖供参考 - Proposal for exact-duplicate sink for all the "double-backslashes in filename" questions

【问题讨论】:

    标签: escaping backslash


    【解决方案1】:

    这是初步答案。它是社区 wiki,因此请随时改进。

    在您的代码中的某处,您有一个包含非转义反斜杠的文件路径。例如:

    const char *fileName = "c:\unescaped\backslashes.txt";
    

    你需要把它改成:

    const char *fileName = "c:\\unescaped\\backslashes.txt";
    

    为什么?

    C、C++、Java、Python等语言的编译器将反斜杠视为特殊字符,称为the escape character

    例如\n 将变成换行符。所以这段代码 - printf("C:\new file.txt"); 将打印出来

    C:
    新文件.txt

    因此,如果您的文件名包含反斜杠,则程序将收到的内容将与您在源代码中看到的不同。反斜杠本身可以用另一个反斜杠转义。所以这段代码 - printf("C:\\new file.txt"); 会打印出来:

    C:\新文件.txt

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 2020-11-12
      • 2014-04-12
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 2019-07-13
      • 2017-03-16
      • 2021-07-13
      相关资源
      最近更新 更多