トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> トリッキーなコード >> エスケープ処理 (C++)

メタキャラクタのエスケープ処理 (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;
}
結果は以下のとおりです。 メタキャラクタのエスケープ ※ Only学習用という事で・・・。 実務では、ライブラリを探して使ったほうが、何かとよさげなヨカーン ^^;)
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。