- 2006-05-14
- プログラム
この土日、プログラムが楽しくてずっとやってしまった。。。
休みなのにコーディングしてるとかもう病気ですか。
でもやっぱプログラムは趣味でやるほうが楽しいね。
調べ物も時間に追われながらやる訳じゃないから(そうでもない場合も歩けど)気楽だしね。
何をやってたかと言うと、VC(VisualC)での文字列操作と動的配列ちっくな扱い方についてをやってました。
VCでの文字列めっさ鬱陶しいね。
VBに慣れすぎたみたい。
VBらくやわぁ・・・
具体的には、
文字列A:"[タイトル][値1][値2]"
のような文字列があったとして、これから角括弧にはさまれた値を取り出そうとしてました。
VBで言うと、instr と Mid があれば楽勝で何も考えなくても出来るような内容。
VCだとそうは行かなかったけど、String クラスを使ってたから結局 find メソッドと substr メソッド で実現してみた。
思いつかん。
恥ずかしいけどコードを晒してみる。
環境は WinXP Home SP2 VC6 SP6
Windows SDK のコードです。
なんかおかしな所とか見つけたらこっそり教えてください。
所詮この程度のプログラマです。
休みなのにコーディングしてるとかもう病気ですか。
でもやっぱプログラムは趣味でやるほうが楽しいね。
調べ物も時間に追われながらやる訳じゃないから(そうでもない場合も歩けど)気楽だしね。
何をやってたかと言うと、VC(VisualC)での文字列操作と動的配列ちっくな扱い方についてをやってました。
VCでの文字列めっさ鬱陶しいね。
VBに慣れすぎたみたい。
VBらくやわぁ・・・
具体的には、
文字列A:"[タイトル][値1][値2]"
のような文字列があったとして、これから角括弧にはさまれた値を取り出そうとしてました。
VBで言うと、instr と Mid があれば楽勝で何も考えなくても出来るような内容。
VCだとそうは行かなかったけど、String クラスを使ってたから結局 find メソッドと substr メソッド で実現してみた。
思いつかん。
恥ずかしいけどコードを晒してみる。
環境は WinXP Home SP2 VC6 SP6
Windows SDK のコードです。
/*---------------------------------------------------------------------------*/
/* trgStr より、 *stDelimiter, *EdDelimiter, で囲まれた文字列を返す
/* *sp, *ep は、検索位置を指定してポインタで返す
/* 存在しない場合は空文字列を返す
/* 検索位置は負数をセットして返す
/*---------------------------------------------------------------------------*/
string GetToken( string trgStr,
const char *stDelimiter,
const char *EdDelimiter,
int *sp,
int *ep )
{
string rtStr;
int cutLength;
*sp = trgStr.find( stDelimiter, *ep ) + 1;
*ep = trgStr.find( EdDelimiter, *sp );
cutLength = *ep - *sp;
if ( *sp <= 0 || *ep <= 0 ){
*sp = -1;
*ep = -1;
return "";
}
rtStr = trgStr.substr( *sp, cutLength );
return rtStr;
}
なんかおかしな所とか見つけたらこっそり教えてください。
所詮この程度のプログラマです。
