0

整数ベクトルから連続範囲を抽出する

私はこのように(繰り返されない値で)ベクトルをソートしました[1,2,3,6,7,8,12,15]

1-3,6-8,12-15のようなベクトルから次のような文字列にすべての範囲を抽出する必要があります。

「0-3,6-8,12,15」

4

1 に答える 1

0

私は最近、このコードを調理しました。ファイルから読み取り、文字列の代わりにファイルに出力します。ニーズに合わせて変更できると確信しています。

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

using namespace std;

template <typename T>
inline T convert(string &s)
{
 T out;
 istringstream ss(s);
 ss >> out;
 return out;
}

int main()
{
 ifstream infile("input.txt");
 ofstream outfile("output.txt");

 string cur_line, last_line;
 int cur, last;

 if (infile.good()) {
  getline(infile, cur_line);
  cur = convert<int>(cur_line);
  outfile << cur_line << ',';
  last = cur;
 }

 while(getline(infile, cur_line))
 {
  cur = convert<int>(cur_line);

  if (cur != last + 1) {
   outfile << last_line << '\n';
   outfile << cur_line << ',';
  }

  last = cur;
  last_line = cur_line;
 }

 outfile << last_line;

 infile.close();
 outfile.close();

 return 0;
}
于 2012-07-26T04:36:38.667 に答える