
この記事はかなり昔に執筆されており、誤りを含む場合があります。
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学習用という事で・・・。 実務では、ライブラリを探して使ったほうが、何かとよさげなヨカーン ^^;)
