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