为什么在代码中文件路径需要使用双反斜杠?

9
在我的程序中,我试图打开一个文件,比如说 C:\unescaped\backslashes.txt,但它无法打开!为什么?
这是一系列常见的问答集合,也是一个社区维基,所以每个人都可以参与维护。
为什么会有这个呢?
网站中有很多问题归结为 OP 不知道在源代码中需要转义文件路径中的反斜杠。通常的问题是“为什么我的程序不起作用?”或者“为什么找不到文件?”,而在源代码的某个地方会有:
const char *fileName = "C:\unescaped\backslashes.txt";

作用范围是什么?

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

元帖参考 - 有关“文件名中双反斜杠”的所有确切重复项的提案

1个回答

7

这是初步的答案。它是社区Wiki,所以请随意改进。

你的代码中有一个包含未转义反斜杠的文件路径。例如:

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

你需要将它改为:

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

为什么?

C、C++、Java、Python和其他语言中的编译器将反斜杠视为特殊字符,称为转义字符

例如,\n将被转换为换行符。因此,这段代码 - printf("C:\new file.txt");将打印:

C:
ew file.txt

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

C:\new file.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接