Выделение подстроки

Задачи и их решение / Выделение подстроки

Задача Выделить подстроку заданной длины начиная с заданного символа

Создадим функцию, которая будет возвращать подстроку заданной длины. Функция будет принимать следующие аргументы:

  • char *str - указатель на просматриваемую строку;
  • int start - начальная позиция выделяемой подстроки в str;
  • int length - длина выделяемой подстроки. Если этот параметр отрицателен, то указывает смещение относительно конца строки.

Реализация

#include <iostream>
using namespace std;
// Функция выделения подстроки
char* substr(char *str, int start, int length=0) {
  char *s;
// Определить длину исходной строки
  int len = 0;
  for(int i=0; str[i]!='\0'; i++)
    len++;
// Определить позицию последнего символа подстроки
  if(length > 0) {
    if(start + length < len)
      len = start + length;
  } else  // length < 0
    len = len + length;
  int newlen = len - start + 1; // длина подстроки
  s = new char [newlen];
// Копирование символов подстроки
  int j=0;
  for(int i=start; i<len; i++) {
    s[j] = str[i]; j++;
  }
  s[j]='\0';
  return(s);
}
// Тестирование функции substr()
int main() {
  system("chcp 1251");
  system("cls");
  char str[]="Здравствуй, мир!";
  char *t;
  cout << str <<endl;
  t = substr(str, 12, 3);  // мир
  cout << t << endl;
  t = substr(str, 12);     // мир!
  cout << t << endl;
  t = substr(str, 0, -6);     // Здравствуй
  cout << t << endl;
  cin.get();
  return 0;
}

Результат выполнения
Выделение подстроки

Назад

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *