2016-01-30 210 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

感謝您的完美回答,並附上文檔資料。 –