2017-04-23 17 views
1

私はしばらくそれを自分でテストしましたが、次のことがまだ効果があるかどうかはまだ分かりません。私はUTF-8内容の文字列であるフォームC++ 11の正規表現とu8接頭辞の文字列

regex reg(R"(\s+)" + a + R"(\s+(.*?)\s+)" + b + R"(\s+)", regex_constants::icase); 
AとBは、いくつかのコンテンツを持つ文字列です

string a = u8"größer"; 
string b = u8"grüner"; 

の正規表現を持っていると言う(私はランダムな例を取り、そこにも可能性がいくつかのアラビア語など)。

は私の質問には、以下がその結果に影響を持っているかどうかである。

regex reg(u8R"(\s+)" + a + u8R"(\s+(.*?)\s+)" + b + u8R"(\s+)", regex_constants::icase); 

私は私のテストのいずれにおいても、違いを指摘しましたが、結果は常にU8の接頭辞とせずに同じでした。だから、これは本当に役に立たないのですか、それとも私がまだ遭遇していないいくつかの隠された効果がありますか?

答えて

2

接頭辞u8が文字列リテラルに与える唯一の影響は、リテラルがと保証され、がUTF-8でエンコードされることです。実装では、固定されていないリテラルをUTF-8としてエンコードすることはできますが、実装ごとに異なります。

接頭辞は、たとえば正規表現エンジンがUnicodeの大文字小文字の区別を実際に理解しているとは限りません。それがUnicodeの期間を理解することも保証されません。 Unicodeの規則に基づくのではなく、バイトシーケンスに基づいたマッチを処理しているというオッズは良いです。

関連する問題