のような文字列があります7X1234 XY1236 NM1235
。最初の2つのアルファベットを無視して、最後の4桁の数字のみを使用してこの文字列をソートしたいと思います。また、それらの数字を比較して、それらが連続しているかどうかを確認したいと思います。
これを実現する方法の 1 つは、これらの文字列を ( ) としてアルファベットと数字に分割し7X and 1234
、数字文字列を int にレキシカル キャストして作業することです。しかし、数字列を並べ替えて比較する際に、最後に付け7X
直す方法である数字部分にアルファベット部分を再度関連付けるにはどうすればよいでしょうか。1234
C++
要するに、私が持っているなら、私は7X1234 XY1236 NM1235 BV1238
得る必要があります7X1234 NM1235 XY1236 BV1238
文字列の数値部分が連続しているかどうかを調べたかったことについては詳しく説明しませんでした。今、1234 1236 1235 1238 のような int しかないとき、私は以下のようなことをします
std::vector<int> sortedDigits{1234 1235 1236 1238};
int count = 1;
int pos = 0;
std::vector<std::pair<int, int> > myVec;
myVec.push_back(std::make_pair(sortedDigits[pos], count));
for(size_t i = 1; i < sortedDigits.size(); ++i)
{
if(sortedDigits[i] != (sortedDigits[i-1] + 1))
{
count = 1;
myVec.push_back(std::make_pair(sortedDigits[i], count) );
++pos;
}
else
{
sortedDigits[pos].second = ++count;
}
}
だから最後に私は(1234, 3)
得る(1238, 1)
文字列がある場合、どうすればこのようなものを取得できるかわかりませんか?