字符切割

//字符分割
class StrDiv
{
public:
	static CHAR * SetString(const CHAR *tString,const CHAR *tSplit);

	static CHAR * GetNextString();

	static string inString;

	static CHAR* outString;

	static string inSplit;

	static CHAR * tempString;
};
//字符分割
string  StrDiv::inString = "";
CHAR*	StrDiv::outString = NULL;
string  StrDiv::inSplit = "";
CHAR*   StrDiv::tempString = NULL;

CHAR * StrDiv::SetString(const CHAR *tString,const CHAR *tSplit)
{
	inString = tString;
	outString = NULL;
	inSplit = tSplit;
	tempString = NULL;
	outString = STRTOKS(const_cast<CHAR *>(inString.c_str()),inSplit.c_str(),&tempString);
	return outString;
}

CHAR * StrDiv::GetNextString()
{
	outString = STRTOKS(NULL,inSplit.c_str(),&tempString);
	return outString;
}
/*

*/
/*************************************************
  Function:		FromStrGetValue
  Description:
				从字符串中根据分割符分割出整数
  Calls:
  Called By:
  Input:
		tString		源字符串
		tSplit		切割符
		Function	转换函数
		First		保存开始位置
		MaxSize		最大长度		
  Return:
		INT 保存到数组的个数
  Others:
例子:
vector<INT> a;
INT b[20];
FromStrGetValue("123,456,789",",",bind2nd(ptr_fun(ATOI),0),back_inserter(a),10);
FromStrGetValue("123,456,789",",",bind2nd(ptr_fun(ATOI),0),insert_iterator<VECTOR_INT >(a,a.end()),10);
FromStrGetValue("123,456,789",",",bind2nd(ptr_fun(ATOI),0),b,10);
vector<string> s;
FromStrGetValue("123,456,789",",|",ReturnOriginal<string>,back_inserter(s),100);
最好用 insert_iterator 因为不是每种容器都有puch_back() push_front() 而insert() 基本上都有
*************************************************/
template<typename _Tst,typename _Fun> inline
INT FromStrGetValue(const CHAR *tString,const CHAR *tSplit,_Fun Function,_Tst First,INT MaxSize=0)
{
	//_DEBUG_RANGE(First, last);
	INT tNumSize = 0;
	INT nSize = MaxSize;
	if (nSize <1 ) return tNumSize;
	CHAR *element = StrDiv::SetString(tString,tSplit);
	_Tst OperatNum = First;
	while (nSize>=1 && element)
	{
		//if (OperatNum == NULL) return tNumSize;
		*OperatNum = Function(element);
		element = StrDiv::GetNextString();
		nSize--;
		OperatNum++;
		tNumSize++;
	}
	return tNumSize;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值