发布
2014年11月14日

分割字符串

评分:3.8/5 (759 票)
*****
在这篇短文中,我想分享一段简短的代码,关于如何像 PHP 编程语言中那样分割字符串。我们知道,在 PHP 中有一个名为 explode() 的函数,可以用给定的分隔符(单个字符或子字符串)来分割字符串。例如,给定一个字符串 str = "the quick brown fox",它将被 " " (空格字符) 分割。我们只需调用 explode(str, " "),该函数就会返回字符串数组 {"the", "quick", "brown", "fox"}。
我们可以用 C++ 编写一个类似“PHP explode()”的函数,不过给定的分隔符仅限单个字符。我们的 explode() 版本会返回 std::vector<string> 作为分割后的字符串。
以下是 explode 的定义(使用 C++11)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const vector<string> explode(const string& s, const char& c)
{
	string buff{""};
	vector<string> v;
	
	for(auto n:s)
	{
		if(n != c) buff+=n; else
		if(n == c && buff != "") { v.push_back(buff); buff = ""; }
	}
	if(buff != "") v.push_back(buff);
	
	return v;
}


上面的代码只是一个简单的函数,但已经过各种情况的充分测试。以下是在 main 函数中的示例

1
2
3
4
5
6
7
8
int main()
{
	string str{"the quick brown fox jumps over the lazy dog"};
	vector<string> v{explode(str, ' ')};
	for(auto n:v) cout << n << endl;
	
	return 0;
}


将产生以下输出


the
quick
brown
fox

希望这篇短文能对您有所帮助。