簡體   English   中英

C++ 無法識別的轉義序列

[英]C++ Unrecognized escape sequence

我想創建一個包含所有可能的特殊字符的字符串。

但是,編譯器在這一行中給了我警告“無法識別的轉義序列”

wstring s=L".,;*:-_⁊#‘⁂‡…–«»¤¤¡=„+-¶~´:№\¯/?‽!¡-¢–”¥—†¿»¤{}«[-]()·^°$§%&«|⸗<´>²³£­€™℗@©®~µ´`'" + wstring(1,34);

任何人都可以告訴我我不能像我那樣將哪個字符添加到這個字符串中?

您必須將\\轉義為\\\\ ,否則\\¯將被解釋為(無效的)轉義序列:

wstring s=L".,;*:-_⁊#‘⁂‡…–«»¤¤¡=„+-¶~´:№\\¯/?‽!¡-¢–”¥—†¿»¤{}«[-]()·^°$§%&«|⸗<´>²³£­€™℗@©®~µ´`'" + wstring(1,34);

轉義序列是一個字符串,其含義與文字字符本身不同。 在 C 和 C++ 中,序列以\\開頭,因此如果您的字符串包含雙引號或反斜杠,則必須使用\\"\\\\正確轉義

在復制粘貼的長字符串中,可能很難發現這些字符,而且將來的維護性也較差,因此建議使用帶有前綴R原始字符串文字,這樣您根本不需要任何轉義

wstring s = LR"(.,;*:-_⁊#‘⁂‡…–«»¤¤¡=„+-¶~´:№\¯/?‽!¡-¢–”¥—†¿»¤{}«[-]()·^°$§%&«|⸗<´>²³£­€™℗@©®~µ´`')"
          + wstring(1,34);

如果您的原始字符串包含)"序列,可以在括號外插入一個特殊的分隔符字符串,例如LR"delim(special string)delim"

暫無
暫無

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

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