Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Akord
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
#1

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

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

Нужно разработать реализацию класса 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!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2009, 17:39     Методы строкового класса
Посмотрите здесь:

C++ Linux методы класса
Методы класса C++
Visual C++ Dll методы класса
Виртуальные методы класса C++
C++ протестировать методы класса
C++ методы класса
C++ Методы и конструкторы класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
07.12.2009, 17:43     Методы строкового класса #2
Цитата Сообщение от Akord Посмотреть сообщение
Помогите пожалуйста с конкатенацией
А если схитрить и вызвать стандартную функцию strcat() ?
Akord
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; 
}
но здесь ошибки есть(
RazorQ
576 / 343 / 9
Регистрация: 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 - метод, то нужно писать его как метод, а не переменную. (скобочки)
Akord
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)
?
ISergey
Maniac
Эксперт С++
1346 / 879 / 51
Регистрация: 02.01.2009
Сообщений: 2,643
Записей в блоге: 1
08.12.2009, 10:45     Методы строкового класса #6
Код
string[COLOR="Red"]/*&*/[/COLOR] string::operator+(char* s)
Без &
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2009, 11:03     Методы строкового класса
Еще ссылки по теме:

C++ Создать динамический класс для работы со строками. Перегрузка строкового класса
Как передавать значения строкового типа в конструктор через объект класса? C++
C++ Builder Указатели на методы класса
C++ Методы класса внутри определения класса
C++ Inline методы класса

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

Или воспользуйтесь поиском по форуму:
Akord
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
09.12.2009, 11:03  [ТС]     Методы строкового класса #7
C++
1
string& string::operator+(const string& x)
а это как написать?
Yandex
Объявления
09.12.2009, 11:03     Методы строкового класса
Ответ Создать тему
Опции темы

Текущее время: 08:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru