在这篇短文中,我想分享一段简短的代码,关于如何像 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;
}
|
将产生以下输出
希望这篇短文能对您有所帮助。