いつもお世話になっています。
開発環境はWindows2000 VC++6.0 MFC です。
今回はリッチエディットボックス内の文字列を取得することについての質問です。
プログラム実行時にリッチエディット内に予め「squrt()」などと表示しており、
「( 」と「)」の間に数値を入力させ、その数値を取得したいと思っています。
strtokを使用し、デリミタ文字群に英字や「( )」を設定すれば数値のみを
取得できそうな気がしますが、他によい方法はないのでしょうか?
よろしくお願いします。
その方法ではなぜダメなのかを書かないといい回答は得られないと思いますよ。
とりあえず一案。
CString::Find()
CString::ReverseFind()
CString::Mid()
の組み合わせ。
どこまでやる必要があるのかによって処理の煩雑さが変わってくると思います。
例えば、必ず、ユーザーは、squrt(23)という入力をしなくてはならない。
()以外の場所に数値を書いたり想定以外の場所に書いた場合は結果を保証しない
と言うのであれば、話簡単で最初に文字列を入れとくのはプログラムなのですから
(の位置をあらかじめ調べておいて(の次の位置から最後から一つ前までを
取り出して数値と扱うだけで済みます。
ユーザーのみょうちくりんな入力に対してエラーを出し、例外的な記述もある程度許し
という事になるとそれに伴って文字列の解析処理だのナンだのが増えるわけです。
結局はどこまで汎用を求めるかで、汎用を求めるのであれば、処理は自ずと見えてくる
と思います。
汎用的な方法となれば、多少の差はあれ同じようなロジックになると思います。
使用するのは、CStringクラスのメソッドとか、文字列周りの標準関数とかそれは状況に
あわせてどうぞ。