#include <Regexp.h>
#include <Dictionary.h>
Dictionary *dict = new Dictionary(); // 辞書/ハッシュ。キー文字列→値 を保持するデータ構造
void match_callback (const char * match, // matching string (not null-terminated)
const unsigned int length, // length of matching string
const MatchState & ms) // MatchState in use (to get captures)
{
char k [10]; // size must be large enough to hold captures
char v [10]; // size must be large enough to hold captures
ms.GetCapture(k, 0);
ms.GetCapture(v, 1);
dict->insert(k, v); // 辞書に追加 (たとえば、 red→120 を追加)
} // end of match_callback
// たとえば、*cbuf = "red=120&green=255&blue=9" のような文字列を想定する
void param2dict(char *cbuf){
MatchState ms (cbuf); //正規表現マッチャーの作成
ms.GlobalMatch ("([a-z]+)=([0-9]+)", match_callback); // (key)=(value) で複数回マッチングする。match_callback は別関数。
int r = dict->search("red").toInt(); // 辞書 dict
int g = dict->search("green").toInt();
int b = dict->search("blue").toInt();
int32_t bgcolor = (int(r * 31 / 255) << 11) | (int(g * 63 / 255) << 5) | (int(b * 31 / 255));
}