C++0xリテラル – プログラミング – Home

通知
すべてクリア

[解決済] C++0xリテラル


enakalle
 enakalle
(@enakalle)
ゲスト
結合: 14年前
投稿: 5
Topic starter  

VC++2008/boost regexで書いたUnicodeテキスト処理プログラムを
VC++2010に移植しようとしております。そうするとVC++2008では
問題がなかった

wregex re( L(?<![\\\\])[\\\\]arccos );

をVC++2010で実行すると例外が発生するようになりました。
トレースするとregexの中の正規表現をコンパイルするところ
で例外が発生しています。

文字列の中で'\'をエスケープしていますが、このリテラルの
仕様がひょっとして変わっているのではないかと思い、ぐぐ
ってみたのですがこの問題にかかわるような例が見つからなかった
のこちらに質問させていただきました。

よろしくお願いします。


引用未解決
トピックタグ
enakalle
 enakalle
(@enakalle)
ゲスト
結合: 14年前
投稿: 5
Topic starter  

どうもboost regexとC++0xの標準ライブラリでは関数のインターフェース
が同じでも、肝心の正規表現の仕様が異なっているようです。

移植はあきらめました。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

std::regex は正規表現を ECMAScript, basic, extended, awk, grep, egrep に差し替
えられますょ?


返信引用
enakalle
 enakalle
(@enakalle)
ゲスト
結合: 14年前
投稿: 5
Topic starter  

情報ありがとうございます。

boost::regexはデフォルトでperl互換のようなのですが、
std::regexでperlの指定はできるでしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

std::regexで指定できるのは列挙したものですべてです。
このうちどれかがperlに相当するかは存じません。


返信引用
enakalle
 enakalle
(@enakalle)
ゲスト
結合: 14年前
投稿: 5
Topic starter  

少し調べてみましたら

A Proposal to add Regular Expressions to the Standard Library
http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2003/n1429.htm#syntax_discussion

Given that perl isn't standardized, the perl syntax probably isn't
a good candidate for the C++ standard.

とあります。そうするとC++0xの時代になってもboost::regexは存在価値を
失わないかもしれませんね。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

開発チームからお返事がありました。
https://connect.microsoft.com/VisualStudioJapan/feedback/details/583162/c-hang-
up-on-using-std-wregex?wa=wsignin1.0

「例外飛ぶのは仕様です」とのこと。


返信引用
enakalle
 enakalle
(@enakalle)
ゲスト
結合: 14年前
投稿: 5
Topic starter  

ありがとうございました。

戻り読み(?<が構文エラーでそれを検出しているということですね。

今は秀和システムの「Boost C++ Libraries プログラミング 第2版」や
http://alpha.sourceforge.jp/devel/boost.regex_ja.pdf
をリファレンスとして使っていますが、C++0xやTR1のサンプル付きの
わかりやすいリファレンス本を待ちたいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました