C++での、メタキャラクタのエスケープ処理コードです。
(ここで紹介した、switch中にif(0)を入れるコードの例です。)
for (int i=0; strSrc[i] != '\0'; i++) {
switch (strSrc[i]){
case '$':
if (strSrc[i+1] != '\0' && strSrc[i+1] != '\n')
break;
if (0)
case '^':
if (i != 0 && strSrc[i-1] != '\n')
break;
case '.':
case '[':
case ']':
case '|':
case '*':
case '+':
case '?':
case '(':
case ')':
result += "\\";
}
result += strSrc[i];
}
C++コード例)
#include <iostream>
using namespace std;
int main()
{
string strSrc = "12!\\\"$#$%&'()abcd";
string result;
for (int i=0; strSrc[i] != '\0'; i++) {
switch (strSrc[i]){
case '$':
if (strSrc[i+1] != '\0' && strSrc[i+1] != '\n')
break;
if (0)
case '^':
if (i != 0 && strSrc[i-1] != '\n')
break;
case '.':
case '[':
case ']':
case '|':
case '*':
case '+':
case '?':
case '(':
case ')':
result += "\\";
}
result += strSrc[i];
}
cout << result.c_str() << endl;
return 0;
}
結果は以下のとおりです。
※ Only学習用という事で・・・。
実務では、ライブラリを探して使ったほうが、何かとよさげなヨカーン ^^;)