R"xxx()xxx"
: xxx可以被替换成任何字符串,不可以包含括号和双引号,而且你需要保证两边是一样的。如果你这样写,那么括号里面的任何字符都不会被转义,甚至是换行符也没有问题。这种字符串语法用来写正则表达式就特别的方便。
可以详细说下用法吗, 感觉不是很理解.
阿神2017-04-17 15:27:28
あなたが理解できないのかR
しないのかxxx
は分かりませんので、すべてお話します
まずは R
Raw String
を表す
たとえば、次のテキスト
リーリーRaw String
が登場する前は、次のように記述する必要がありました
文字列内の特殊記号はエスケープする必要があります
しかし、Raw String
を持った後は、次のように書くことができます
つまり、括弧 Raw String
内のテキストは 表示されている内容が取得されるものです
おそらく、なぜ括弧が必要なのか疑問に思っているかもしれません。
テキストについて考える
リーリー括弧がない場合は R"abc"efg"
と記述されるため、どちらが対になっている二重引用符
であるかを判断することができないため、<🎜 を区切るために括弧を導入する必要があります>
括弧を導入した後、原文に引用符 + 括弧があった場合はどうすればよいでしょうか? たとえば
リーリー
と書く必要があり、これでは明らかに文法ミスが発生し、どのペアが R"(abc)"efg)"
)"
であるか判断できなくなります。テキストに が含まれていますが、 )"
では ()
を区切るのに十分ではありません
したがって、 (区切り文字) delimiter
をカスタマイズする必要があります。これは、質問の です。xxx(...)xxx
の上の文字列は、
および R"xxx(abc)"efg)xxx"
として記述できます。プログラマは、
に含まれるすべてがオリジナルのテキストであることがわかります。 もちろん、xxx(...)xxx
をカスタマイズすることもできます。
と記述することもできます。
巴扎黑2017-04-17 15:27:28
これは C++11 の生の文字列リテラルです
リーリー出力
リーリーつまり、括弧内の単語はエスケープされず、そのまま出力されます。
正規表現では「"」が頻繁に使用されるため、この方法では「"」を「\」に変換する問題を回避できます。
例:
このメソッドを使用しない場合は、次のように記述する必要があります:
リーリー