我知道这是一个非常简单的问题,但我只想一次为自己解决
我只想使用字符作为分割定界符将字符串分割成数组。(很像C#著名的 .Split() 函数。我当然可以应用蛮力方法,但是我想知道是否有什么更好的方法了。)
到目前为止,我已经搜索过,可能 最接近的 解决方法是使用 strtok() ,但是由于不方便(将字符串转换为char数组等),我不喜欢使用它。有没有更简单的方法来实现这一目标?
注意: 我想强调这一点,因为人们可能会问:“蛮力为什么不起作用”。我的暴力解决方案是创建一个循环,并在其中使用 substr() 函数。但是,由于它需要 起点 和长度,因此在我想分割日期时会失败。因为用户可能将其输入为7/12/2012或07/3/2011,所以在计算“ /”定界符的下一个位置之前,我可以真正说出长度。
使用向量,字符串和字符串流。有点麻烦,但可以解决问题。
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" };