我试图在C ++中以这样的字符串使用反斜杠:
HWND hwnd = FindWindowA(NULL, "C:\Example\App.exe");
因此对于此示例,我将得到以下错误/警告:“未知转义序列:'\ E'”“”未知转义序列:'\ A'“。 由于我需要输入窗口的确切名称,是否有任何方法可以避免使用反斜杠或阻止编译器将其解释为“转义序列”?
答案 0 :(得分:7)
您必须正确地逃避它们,C ++ 11添加了raw string,可以简化此事情:
HWND hwnd = FindWindowA(NULL, R"(C:\Example\App.exe)");
其他则手动完成:
HWND hwnd = FindWindowA(NULL, "C:\\Example\\App.exe");
答案 1 :(得分:4)
您应该正确地避免这种情况:
HWND hwnd = FindWindowA(NULL, "C:\\Example\\App.exe");
有关所有转义序列的完整列表,请检查以下内容:
答案 2 :(得分:1)
您可以将反斜杠加倍,以使它们转义:
HWND hwnd = FindWindowA(NULL, "C:\\Example\\App.exe");
答案 3 :(得分:0)
在字符串文字中,反斜杠是字符转义序列的第一个字符。因此,"\n"
由两个字符组成:换行符(来自\n
)和空字符(因为它是字符串文字)。
因此,要在文本中添加反斜杠,您需要一个表示反斜杠的转义字符。很简单:"\\"
由两个字符组成:反斜杠字符(来自\\
)和空字符(因为它是字符串文字)。
另一种可能性是使用“原始字符串文字”,它会忽略转义序列。 R"(\n\\)"
包含五个字符:反斜杠字符,n
字符,另外两个反斜杠字符和空字符(因为它是字符串文字)。