码迷,mamicode.com
首页 > 编程语言 > 详细

C++实现字符串分割

时间:2018-10-21 18:26:11      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:int   存储   st3   c++   word   分享   eve   .com   ons   

#include <iostream>
#include <string>
#include <cstring>
#include <vector>
using namespace std;
 
string reverse_one_word(string str) {
	for(int i = 0; i < str.length()/2; i ++) {
		char tmp;
		tmp = str[i];
		str[i] = str[ str.length() - i - 1 ];
		str[ str.length() - i - 1 ] = tmp;
	}
	return str;
}
 
vector<string>  split(const string& str,const string& delim) { //将分割后的子字符串存储在vector中
	vector<string> res;
	if("" == str) return  res;
	
	string strs = str + delim; //*****扩展字符串以方便检索最后一个分隔出的字符串
	size_t pos;
	size_t size = strs.size();
 
	for (int i = 0; i < size; ++i) {
		pos = strs.find(delim, i); //pos为分隔符第一次出现的位置,从i到pos之前的字符串是分隔出来的字符串
		if( pos < size) { //如果查找到,如果没有查找到分隔符,pos为string::npos
			string s = strs.substr(i, pos - i);//*****从i开始长度为pos-i的子字符串
			res.push_back(s);//两个连续空格之间切割出的字符串为空字符串,这里没有判断s是否为空,所以最后的结果中有空字符的输出,
			i = pos + delim.size() - 1;
		}
		
	}
	return res;	
}
// 
//void test1() { //空字符串
//	cout << "******test1****** "<<endl;
//	string s = "";
//	
//	std::vector<string> res = split(s, " ");
//	for (int i = 0; i < res.size(); ++i)
//	{
//		cout << res[i] <<endl;
//	}
//}
// 
//void test2() { //只有一个字符串
//	cout << "******test2****** " <<endl;
//	string s = "my";
//	
//	std::vector<string> res = split(s, " ");
//	for (int i = 0; i < res.size(); ++i)
//	{
//		cout << res[i] <<endl;
//	}
//}
 
void test3() { //正常字符串
	cout << "******test3****** "<<endl;
	string s = "my|name|is|caihuihuang";
	
	std::vector<string> res = split(s, "|");
	for (int i = 0; i < res.size(); ++i)
	{
		cout << res[i] <<endl;
	}
}
 
 
int main() {
 
//	test1();
//	test2();
	test3();
	return 0;
}

技术分享图片

 


  

C++实现字符串分割

标签:int   存储   st3   c++   word   分享   eve   .com   ons   

原文地址:https://www.cnblogs.com/renran/p/9826002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!