0

我必须根据星号(*)拆分字符串。例如,如果我得到一个字符串,"a*a"那么我必须得到结果"a",我通过拆分字符串 API 在 C++ 中实现了这个结果。但是如果我得到一个字符串,"12*12*12*12"那么我必须得到"12*12"结果。我有一个想法来实现这一点,方法是采用中间星位并拆分字符串。是否可以通过 STL 正则表达式或任何其他简单的方式来实现。

谢谢拉姆库马尔

4

3 回答 3

3

在评论之后,我得出结论,split在这种情况下不太适合。改为使用substr

 int len = str.length();
 string splittedPart = str.substr(len/2 + 1); //second half
于 2013-02-19T09:16:55.150 回答
1

如果你确定你总是会有奇数颗星星,找到中间的那个:

std::string input;
std::vector<unsigned> star_positions;

for (unsigned i = 0; i < input.size(); ++i)
{
    if (input[i] == '*')
        star_positions.push_back(i);
}

unsigned split_position = star_positions[star_positions.size()/2];

std::string input_L = input.substr(0, split_position);
std::string input_R = input.substr(split_position+1, input.size());
于 2013-02-19T09:26:19.513 回答
1

为什么不继续在 Star 上拆分并将结果放入向量中。然后您可以轻松地从向量中检索原始字符串的前半部分和后半部分。想想如果你有偶数颗星星会发生什么

于 2013-02-19T08:08:01.113 回答