使用STL进行字符串分割(C++)

在写C++程序过程中,有时候会遇到字符串分割的问题,写一个字符串分割的函数,便于以后使用。

使用STL进行字符串分割涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find (const string& str, size_t pos = 0) const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:返回查询结果的迭代器

2、substr函数
原型:string substr (size_t pos = 0, size_t n = npos) const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos)
返回值:一个子字符串,从其指定的位置开始
备注:如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。

实现如下:

bool strsegmentation(string input, char c, vector <string> & segment)
{
	//input		输入的字符串
	//c			分割符
	//segment	输出分割字符片段(集)
	if(input == "")
		return false;
	string tempstr;
	int comma;
	while (1) 
	{
		comma = input.find(c);
		if(comma == -1)
		{
			tempstr = input.substr(0, input.length());
			segment.push_back(tempstr);
			break;
		}
		tempstr = input.substr(0, comma);
		input.erase(0, comma + 1);
		segment.push_back(tempstr);
	}
	if(segment.size() == 0)
	{
		printf("输入字符串为空...\n");
		return false;
	}
	return true;
}

main函数中:

int main(int argc, char* argv[])
{
	string teststr = "qwert tdytf gugug35 7665 75567 2wdrt6";
	vector <string> segment;
	if(!strsegmentation(teststr, ' ' ,segment)) return 0;

	for (int i = 0; i < segment.size(); ++i)
		cout << segment[i] << endl;
	
	system("pause");
	return 0;
}

运行结果:
结果

希望对大家有帮助。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-Chin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值