dcdd144598 2011-02-23 kinaba: #include "stdafx.h" dcdd144598 2011-02-23 kinaba: #include "cmdarg.h" dcdd144598 2011-02-23 kinaba: #include "string.h" dcdd144598 2011-02-23 kinaba: using namespace ki; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: Argv::Argv( const TCHAR* cmd ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: TCHAR *p, endc; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: buf_ = (p=new TCHAR[::lstrlen(cmd)+1]); dcdd144598 2011-02-23 kinaba: ::lstrcpy( p, cmd ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: while( *p != TEXT('\0') ) dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // 引数を区切る空白をスキップ dcdd144598 2011-02-23 kinaba: while( *p == TEXT(' ') ) dcdd144598 2011-02-23 kinaba: ++p; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // " だったら、その旨記録してさらに一個進める dcdd144598 2011-02-23 kinaba: if( *p == TEXT('\"') ) dcdd144598 2011-02-23 kinaba: endc=TEXT('\"'), ++p; dcdd144598 2011-02-23 kinaba: else dcdd144598 2011-02-23 kinaba: endc=TEXT(' '); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 文字列終端なら終了 dcdd144598 2011-02-23 kinaba: if( *p == TEXT('\0') ) dcdd144598 2011-02-23 kinaba: break; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 引数リストへ保存 dcdd144598 2011-02-23 kinaba: arg_.Add( p ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 引数の終わりへ… dcdd144598 2011-02-23 kinaba: while( *p!=endc && *p!=TEXT('\0') ) dcdd144598 2011-02-23 kinaba: ++p; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 終わりは'\0'にすることによって、引数を区切る dcdd144598 2011-02-23 kinaba: if( *p != TEXT('\0') ) dcdd144598 2011-02-23 kinaba: *p++ = TEXT('\0'); dcdd144598 2011-02-23 kinaba: } dcdd144598 2011-02-23 kinaba: }