在C++中使用星号拆分字符串

Split string using star in C++

本文关键字:拆分 字符串 C++      更新时间:2023-10-16

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

谢谢Ramkumar

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

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

如果你确信你会一直有奇数颗恒星,那就找一颗老恒星:

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());

为什么不继续对Star进行拆分,并将结果放入向量中。然后,您可以很容易地从向量中检索原始字符串的前半部分和后半部分。想想如果你有偶数颗恒星

会发生什么