[ MFC ] 文字列を改行で分割して取り出す ( CAtlString::Tokenize )

Pocket

ここでは、VC++ の MFC アプリケーションで、文字列を改行で分割して取り出すサンプルコードを掲載しています。

C や C++ で文字列操作は、久しぶり(でなくとも)にやると本当に大変に感じます。マイクロソフトさん、split とかお願いします。それで私の仕事がなくなっても構いません。

スポンサーリンク

文字列を改行で分割する

文字列を改行コードで分割するサンプルコードです。詳細はサンプル内のコメントを参照ください。

CAtlString strRows;
CAtlString row;
int curPos = 0;

// 分割対象の文字列
// 最後に改行コードがあってもなくても構わない
strRows = _T("row1\r\nrow2\r\nrow3\r\n");
//strRows = _T("row1\r\nrow2\r\nrow3");

// 最初の改行までの文字列を取り出す
row = strRows.Tokenize(_T("\r\n"), curPos);
while (row != "")
{
    // デバッグ出力
    OutputDebugString(row + "\r\n");
    // row1
    // row2
    // row3

    // 次の改行までの文字列を取り出す
    row = strRows.Tokenize(_T("\r\n"), curPos);
}

意外とあっさりしていますが、やはり大変ですね。いくつもの処理が積み重なって大きな差となるような気がします。VB.NET とか C# はやっぱり楽ですね。楽だと工数だけでなく、人によって程度の差はあっても不具合も減ると思いますので、さらにいいです。

MFC エディットコントロールのテキストの取得と設定

「 文字列操作は大変だ、大変だ。」 と騒いでいたわりには、意外とあっさりとサンプルができましたのでもう一つ初心者(まさお)向けに、MFC のエディットコントロールのテキストの取得と設定を行うサンプルコードを紹介します。

CString editText; // エディットコントロールのテキストを受け取るバッファ

// エディットコントロールを CEdit クラスにキャスト
CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT5);

// テキストを取得する
edit->GetWindowText(editText);

// エディットコントロールのテキストをクリア
// 設定も同様
edit->SetWindowText(_T(""));

メモ

エディットコントロールに改行を入力したい場合は、Ctrl キーを押しながら Enter キーを押す必要がありました。Ctrl キーの押下を必要としないで改行を入力する方法はあるのでしょうか?

できれば設定とかでできるいいのですが。ちなみに ダイアログベースの MFC アプリケーションです。どなたか、ヘルプミーです。

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>