[英]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.