TOP >> マニアックなプログラミング
トリッキーコードネット トリッキーなコード

【トリッキーなコード】エスケープ処理 (C++)

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; }
結果は以下のとおりです。 C言語/C++でのメタキャラクタのエスケープ ※ Only学習用という事で・・・。 実務では、ライブラリを探して使ったほうが、何かとよさげなヨカーン ^^;)
トリッキーコードネット の TOPへ HOTNEWS の 総合TOPへ