2016-01-30 234 views
1

我想知道如何避免反斜杠和双引号转义它的表达式。将使用R()与LPCSTR一起工作?C++避免反斜杠和双引号转义

反斜杠:

WriteKey("\"); //this will escaped accidentally. 
WriteKey("/"); //this wouldn't 

同双引号:

WriteKey("""); //this would escape too 
WriteKey("'"); //but not this 

注:WriteKey()需要LPCSTR它使用R()工作,LPCSTR的说法

+0

你使用什么编译器? –

+0

'主流'IDE:Visual Studio –

+0

原始字符串就像普通的字符串文字一样正常的字符串文字(例如'“foobar”'),不同之处在于您不必转义某些字符。 –

回答

1

会?

是的。原始字符串文字会生成与其非原始对应字符相同类型的字符串。

以下几行将具有相同内容的字符串传递给WriteKey

WriteKey("\\"); // manual escaping 
WriteKey(R"(\)"); // raw string literal 

正如你所看到的,它并没有多大意义,使用原始字符串字面量在很短的字符串。

从VS2013开始,Visual Studio支持原始字符串文字。

+0

'WriteKey (“\\”);'这是否只输出'\'? –

+1

@KhairoulIkhwan检查MS网站上的文档[here](https://msdn.microsoft.com/en-us/library/69ze775t.aspx) – rbaleksandar

+0

感谢您的完美回答,并附上文档资料。 –