一尘不染

用字符分割字符串

algorithm

我知道这是一个非常简单的问题,但我只想一次为自己解决

我只想使用字符作为分割定界符将字符串分割成数组。(很像C#著名的 .Split()
函数。我当然可以应用蛮力方法,但是我想知道是否有什么更好的方法了。)

到目前为止,我已经搜索过,可能 最接近的 解决方法是使用 strtok()
,但是由于不方便(将字符串转换为char数组等),我不喜欢使用它。有没有更简单的方法来实现这一目标?

注意: 我想强调这一点,因为人们可能会问:“蛮力为什么不起作用”。我的暴力解决方案是创建一个循环,并在其中使用 substr()
函数。但是,由于它需要 起点 和长度,因此在我想分割日期时会失败。因为用户可能将其输入为7/12/2012或07/3/2011,所以在计算“
/”定界符的下一个位置之前,我可以真正说出长度。


阅读 187

收藏
2020-07-28

共1个答案

一尘不染

使用向量,字符串和字符串流。有点麻烦,但可以解决问题。

std::stringstream test("this_is_a_test_string");
std::string segment;
std::vector<std::string> seglist;

while(std::getline(test, segment, '_'))
{
   seglist.push_back(segment);
}

结果是向量的内容与

std::vector<std::string> seglist{ "this", "is", "a", "test", "string" };
2020-07-28