To this:

string const convertTo7chars(string const & input)
{
        string::size_type size = input.size();
        if (size != 13 && size != 10 && size != 4)
                // Can't deal with it.
                return input;

        if (input[0] != '#')
                // Can't deal with it.
                return input;

        string format(input);

        switch (size) {
        case 13:
                format.erase(3, 2);
                format.erase(5, 2);
                format.erase(7, 2);
                break;
        case 10:
                format.erase(3, 1);
                format.erase(5, 1);
                format.erase(7, 1);
                break;
        case 4:
                format.insert(2, 1, '0');
                format.insert(4, 1, '0');
                format.append(1, '0');
                break;
        }

        return format;
}

(
Another approach:

  ostringstream format;
  format << "#";
  switch (size) {
  case 13:
          format << input.substr(1, 2) << input.substr(5, 2) 
                 << input.substr(9, 2);
  break;
  case 10:
          format << input.substr(1, 2) << input.substr(4, 2)
                 << input.substr(7, 2);
  break;
  case 4:
          format << input[1] << '0' << input[2] << '0' << input[3] << '0';
  break;
  }
  return format.str();
)

-- 
        Lgb

Reply via email to