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

スターで分割を続けて、結果をベクトルに入れないでください。その後、ベクトルから元の文字列の前半と後半を簡単に取得できます。星の数が偶数だったらどうなるか考えてみてください

于 2013-02-19T08:08:01.113 に答える