ここでは、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 アプリケーションです。どなたか、ヘルプミーです。