在C ++中使用star拆分字符串

时间:2013-02-19 07:50:02

标签: c++ string split

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

由于 Ramkumar

3 个答案:

答案 0 :(得分:3)

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

 int len = str.length();
 string splittedPart = str.substr(len/2 + 1); //second half

答案 1 :(得分:1)

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

答案 2 :(得分: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());