VC++で正規表現

MFCでは正規表現のライブラリ無いけど標準のほうを使えば使える。

C++11で名前空間がtr1からstdになってるらしいので新しい環境ならそれに置き換えてね

#include <iostream>
#include <string>
#include <regex>

...

std::tr1::regex regPattern(strPattern);
std::tr1::match_results<const char *> results;
regex_search(strText.GetBuffer(), results, regPattern, std::tr1::regex_constants::match_default);

CString resultString = "";
std::tr1::match_results<const char *>::const_iterator it = results.begin();
while (it != results.end()) {
	if (it->matched) {
		std::string tmp;
		tmp = it->str();
		resultString.Format("%s",tmp.c_str());
	}
	it++;
}

MFCでディレクトリ内の全てのファイルの取得する

/*-------------------------------------------------------------------------------/

  関数名:void FindAllFile(LPCTSTR pstrName, CListBox &listbox, BOOL bFolder)
  引 数:pstrName 検索するファイルの名前が入っている文字列へのポインタ。
      listbox  ファイル名を格納するCListBoxの参照。
     bFolder   TRUEにするとフォルダ名もリストに登録。
  解 説:ディレクトリ内のファイルを全て検索しリストボックスに登録。

/-------------------------------------------------------------------------------*/
void FindAllFile(LPCTSTR pstrName, CListBox &listbox, BOOL bFolder)
{
    CFileFind fnd;
    if(fnd.FindFile(pstrName, 0))
    {
        int i = 1;
        while(i)
        {
            i = fnd.FindNextFile();

            // 処理が長くなった時の為の対策。
            MSG msg;
            if(::PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
            {
                ::TranslateMessage(&msg);
                ::DispatchMessage(&msg);
            }

            // ファイル名が"."か".."の場合。
            if(fnd.IsDots())
                continue;
                        
            // フォルダだった場合。
            if(fnd.IsDirectory())
            {
                CString strFindFile = pstrName;
                strFindFile.Insert(strFindFile.ReverseFind('\\') + 1,
                                   fnd.GetFileName() + _T("\\"));

                // 再帰呼び出し。
                FindAllFile(strFindFile, listbox, bFolder);
                if(!bFolder)
                    continue;
            }
            // ファイル名の取得・設定
            CString strFilePath = pstrName;
            strFilePath = strFilePath.Left(strFilePath.ReverseFind('\\') + 1);
            listbox.AddString(strFilePath + fnd.GetFileName());
        }
        fnd.Close();
    }
}

使用例

// Cドライブのファイルとフォルダ全てをリストボックスに設定します。
char *findfile = _T("c:\*.*");
FindAllFile(findfile, m_listbox, TRUE);  // m_listboxはリストボックスのメンバ変数

自分のドメインがSpamhausのブロックリストに登録された場合の解除手順

Spamhausとは

Spamhaus.orgとは、スパムメールを送信しているなど、スパムに荷担しているドメインやIPアドレスをリアルタイムに作成したリストを公開している組織です。しかし、その利用範囲は「スパムメール対策」に限らないことに注意してください。

実際にSpamhausのデータベースは様々な企業やウェブサービスで利用されています。しかし、Spamhausの作るデータベースには、スパムとは無関係のドメイン/IPアドレスが登録されてしまうなど、誤登録の多さが問題であるとも言われています。

.NETでEncoding.GetEncodingメソッドを使う場合に指定するコードページ名の一覧

表示名コードページIDコードページ名補足
日本語 シフトJIS932shift_jis
shift-jis
x-sjis
sjis
MS_Kanji
など
Shift_JISとは若干異なるが、Shift_JISを扱う場合は通常これを使う
CP932と同じ?
OSが日本語環境の時は、Encoding.Defaultプロパティや、GetEncoding(0)で取得できる
プラットフォームに依存
日本語 (Mac)10001x-mac-japaneseMacJapanese
プラットフォームに依存
日本語 EUC51932euc-jpJIS X 0212をサポートしていないなどEUC-JPとは若干異なるが、EUC-JPを扱う場合は「20932」よりも通常こちらを使う
CP51932と同じ?
日本語 (JIS 0208-1990 および 0212-1990)20932euc-jpMSDNの「Encoding.GetEncodings メソッド」には「20932と51932は同じ」とあるが、若干異なる
JIS X 0212をサポートしている
CP20932に似ているが、3バイト文字はサポートしていない
「GetEncoding("euc-jp")」では、「51932」の方が返される
プラットフォームに依存
日本語 JIS50220iso-2022-jp半角カタカナをサポートするなどISO-2022-JP(JISコード)とは若干異なるが、ISO-2022-JPを扱う場合は通常これを使う
エンコードで半角カタカナが全角カタカナに変換される
「50221」や「50222」でエンコードされた半角カタカナでもデコードできる?
CP50220と同じ?
日本語 JIS(1バイトカタカナ可)(CP50221)50221csISO2022JP半角カタカナ以外は「50220」と同じ?
半角カタカナも半角のまま
エスケープシーケンスを使って半角カタカナをサポート
「50222」でエンコードされた半角カタカナでもデコードできる?
CP50221と同じ?
日本語 JIS(1バイトカタカナ可 - SO/SI)(CP50222)50222iso-2022-jp半角カタカナ以外は「50220」と同じ?
半角カタカナも半角のまま
SO/SIを使って半角カタカナをサポート
「50221」でエンコードされた半角カタカナでもデコードできる?
「GetEncoding("iso-2022-jp")」では、「50220」の方が返される
IBM EBCDIC (日本語カタカナ)20290IBM290IBM CCSID 00290
プラットフォームに依存
UTF-765000utf-7BOMが付いているStreamならば他の形式でもデコードできる?
UTF-865001utf-8Streamに書き込む時にはBOMが付く
BOMが付いているStreamならば他の形式でもデコードできる?
UTF-16 (リトル エンディアン)1200utf-16UTF-16LE
Streamに書き込む時にはBOMが付く
BOMが付いているStreamならば他の形式でもデコードできる?
UTF-16 (ビッグ エンディアン)1201utf-16BE
unicodeFFFE
UTF-16BE
Streamに書き込む時にはBOMが付く
BOMが付いているStreamならば他の形式でもデコードできる?
UTF-32 (リトル エンディアン)12000utf-32UTF-32LE
Streamに書き込む時にはBOMが付く
BOMが付いているStreamならば他の形式でもデコードできる?
UTF-32 (ビッグ エンディアン)12001utf-32BEUTF-32BE
Streamに書き込む時にはBOMが付く
BOMが付いているStreamならば他の形式でもデコードできる?
US-ASCII20127us-ascii
ascii