5

这是一个主要与 WinAPI RegSetValueEx 有关的问题。如果您在这里查看 MSDN 中的描述,您会发现:

lpData [in] 要存储的数据。

REG_SZ,字符串必须以空值结尾。对于 REG_MULTI_SZ 数据类型,字符串必须以两个空字符结束。反斜杠前面必须有另一个反斜杠作为转义字符。例如,指定“C:\\mydir\\myfile”来存储字符串“C:\mydir\myfile”。

我的问题是,我真的需要逃避斜线吗?因为我以前从未这样做过,而且效果很好。

4

2 回答 2

8

这确实是一个文档错误。您不需要在此处转义反斜杠。您发送到此 API 的确切字符串将存储在注册表中。不会执行反斜杠处理。

现在,在 C 和 C++ 中确实需要对字符串文字中的某些字符进行转义,但这与 Win32 API 文档无关。这是针对特定语言的源代码到目标代码翻译的问题,并且远远超出了本文档的范围。

于 2012-04-14T08:06:34.297 回答
2

是的,因为\在 C++ 中有一个含义,而\\意味着一个普通的反斜杠。

\出现在字符串中时,C++ 编译器将查看下一个字符并将组合转换为某种东西(例如\n将转换为“换行符”字符)。\\将转换为常规反斜杠。这称为“转义”(历史上,在旧终端上,ESC+组合键用于许多不在键盘上的键)。

于 2012-04-14T07:38:48.320 回答