Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
1

Методы строкового класса

07.12.2009, 17:39. Показов 1303. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно разработать реализацию класса string, позволяющего оперировать с
текстовыми строками, как с базовыми типами данных. Класс должен обеспечивать выполнение следующих операции:

- конкатенация строк (оператор +)
- поиск и замена текста (метод replace)
- (еще куча всего, что я уже написал)

Вот каким образом все выглядит(убраны другие методы, чтобы не загромождать):
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  class string { 
      struct rep 
 { 
          char* s;           // указатель на данные 
          int   n;           // счетчик ссылок 
  }; 
      rep *p; 
 
  public: 
      string(char *);      
      string();              
      string(string &);      
      ~string(); 
  }; 
 
  string::string() 
  { 
      p = new rep; 
      p->s = 0; 
      p->n = 1; 
  } 
 
  string::string(char* s) 
  { 
      p = new rep; 
      p->s = new char[ strlen(s)+1 ]; 
      strcpy(p->s, s); 
      p->n = 1; 
  } 
 
  string::string(string& x) 
  { 
      p = new rep; 
      p->s = new char[strlen(x.p->s) + 1]; 
      strcpy(p->s, x.p->s); 
      p->n = x.p->n; 
      p->n++; 
  } 
 
  string::~string() 
  { 
      if (--p->n == 0) { 
          delete p->s; 
          delete p; 
      } 
  }
Помогите пожалуйста с конкатенацией и методом replace!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2009, 17:39
Ответы с готовыми решениями:

Стоит ли прятать интерфейсные методы внутри класса?
1) Стоит ли прятать интерфейсные методы внутри класса, чтобы обеспечить доступ к интерфейсу...

Указатели на методы класса
Как вот это откомпилить в C++ Builder WindowClass.lpfnWndProc = &CMainWindow::OnEvent; при...

Создание массива указателей на методы класса TForm2
Здравствуйте! Разрабатываю приложение, состоящие из трех форм. Первая форма представляет собой...

Dll методы класса
здравствуйте, у меня такой вопрос есть дллка в которой экспортированные методы класса к примеру...

6
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
07.12.2009, 17:43 2
Цитата Сообщение от Akord Посмотреть сообщение
Помогите пожалуйста с конкатенацией
А если схитрить и вызвать стандартную функцию strcat() ?
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
07.12.2009, 19:06  [ТС] 3
я думаю, что как-то так:
C++
1
2
3
4
5
6
7
8
9
  string& string::operator+(char* s)
  {
    string temp;
    temp.length = strlen(p->s) + strlen(s); // метод length есть в этом классе, вычисляет длину строки
     temp = new char[temp.length + 1];
    strcpy(temp, p->s);       
    strcat(temp, s);       
    return temp; 
}
но здесь ошибки есть(
0
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
07.12.2009, 20:13 4
Цитата Сообщение от Akord Посмотреть сообщение
temp = new char[temp.length + 1];
Нужно выделять память под массив char. В твоем случае temp.p->s = new char[temp.length() + 1];
И потом, раз length - метод, то нужно писать его как метод, а не переменную. (скобочки)
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
08.12.2009, 09:57  [ТС] 5
вот так?
C++
1
2
3
4
5
6
7
8
9
  string& string::operator+(char* s)
  {
    string temp;
    temp.length() = strlen(p->s) + strlen(s); 
    temp.p->s = new char[temp.length() + 1];
    strcpy(temp.p->s, p->s);       
    strcat(temp.p->s, s);       
    return temp; 
}
а как сделать
C++
1
string& string::operator+(const string& x)
?
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
08.12.2009, 10:45 6
Код
string[COLOR="Red"]/*&*/[/COLOR] string::operator+(char* s)
Без &
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
09.12.2009, 11:03  [ТС] 7
C++
1
string& string::operator+(const string& x)
а это как написать?
0
09.12.2009, 11:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2009, 11:03
Помогаю со студенческими работами здесь

Создать динамический класс для работы со строками. Перегрузка строкового класса
Форумчане, помогите пожалуйста с задачей. Никак не пойму как перегрузить часть операторов. Вот...

Как передавать значения строкового типа в конструктор через объект класса?
Как передавать значения строкового типа в конструктор через объект класса? Или просто, как...

Методы класса не видят одно из полей класса
Проблема описана в названии. Не могу понять причину того, что методы класса не считают одно из...

Методы класса внутри определения класса
Все привет! Решил закрепить свои знания по C++, читаю Р.Лафоре - "Объектро-ориентированное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru