簡體   English   中英

為什么必須在C ++中轉義字符串文字中的反斜杠?

[英]Why must backslashes in string literals be escaped in C++?

我想為兩種語言聲明相同的正則表達式模式。 對於TCL,我這樣做

set pattern "\d\s\S" 

但對於C ++,我必須以相同的模式執行此操作

boost::regex pattern("\\d\\s\\S");

否則C ++編譯器會告訴我們以下內容:

warning C4129: 'd' : unrecognized character escape sequence

那么為什么TCL不試圖找到\\ d \\ s \\ S轉義符號而只是忽略\\ -s但C ++嘗試又糟透了?

我記得PS PHP作為TCL工作。

這就是C ++和PHP的不同之處; 在PHP中,反斜杠后面的字符與一"rnvtx"特殊字符匹配(我相信"rnvtx" )。 如果匹配失敗,它將繼續而不改變含義。

但是,C ++期望該字符在那個小集合中(我認為該集合是更大的btw)但是如果匹配失敗,你將看到錯誤。

C ++具有Character Escape Sequences的概念。 轉義序列采用形式\\c ('c'是一個字符),用於定義字符串文字中的某些特殊字符,因此,反斜杠本身也必須轉義以表示特殊字符不是暗示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM