c++分割字符串

由于C++中没有C#中对字符串Split的操作,最近string使用频率比较高,写了以下两种对字符串进行以想要的切割方式切割。

将字符串分割并转换成对应的进制数

int StringToSystem(string &str, vector<int> &strItem, char TypeName,int System)
{
	int tIndex = 0;
	int tTemp;
	if (str == "")
	{
		return tIndex;
	}
	if (str.find(TypeName) == string::npos)
	{
		tTemp = strtoul(str.c_str(), NULL, System);
		strItem.push_back(tTemp);
		tIndex++;
		return tIndex;
	}
	auto endPos = str.find(TypeName);
	auto strLength = str.size();
	while (endPos != string::npos)
	{
		tIndex++;
		string Item = str.substr(0, endPos);
		tTemp = strtoul(Item.c_str(), NULL, System);
		strItem.push_back(tTemp);
		strLength = strLength - endPos;
		str = str.substr(endPos + 1, strLength);
		endPos = str.find(TypeName);
		if (endPos == string::npos)
		{
			tTemp = strtoul(str.c_str(), NULL, System);
			strItem.push_back(tTemp);
			tIndex++;
		}
	}
	return tIndex;

}

将字符串分割存入容器中

int StringToArray(string str, vector<string > &strItem,char TypeName)
{
	int tIndex = 0;
	if (str=="")
	{
		return tIndex;
	}
	if (str.find(TypeName) == string::npos)
	{
		strItem.push_back(str);
		tIndex++;
		return tIndex;
	}
	auto endPos = str.find(TypeName);
	auto strLength = str.size();
	while (endPos!=string::npos)
	{
		tIndex++;
		string Item = str.substr(0, endPos);
		strItem.push_back(Item);
		strLength = strLength - endPos;
		str = str.substr(endPos + 1, strLength);
		endPos = str.find(TypeName);
		if (endPos == string::npos)
		{
			strItem.push_back(str);
			tIndex++;
		}
	}
	return tIndex;
}

测试:

int main()
{
	string strName = "my name is Neilyo!";
	vector<string> strItem;
	int tlen1 = StringToArray(strName, strItem, ' ');
	for (int i = 0; i < tlen1; i++)
		std::cout << strItem[i]<<std::endl;
	string strTest = "11-22-33-44-55-66-77-88-99-156-200";
	vector<int> tItem;
	int tlen2 = StringToSystem(strTest, tItem, '-',10);
	for (int i = 0; i < tlen2; i++)
		std::cout << tItem[i] << std::endl; 
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值