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

Класі String - C++

Восстановить пароль Регистрация
 
Sylar
 Аватар для Sylar
2 / 2 / 0
Регистрация: 06.06.2012
Сообщений: 119
14.12.2013, 13:07     Класі String #1
Как разработать класс String - строка символов. Реализовать операции присваивания и конкатенацию т.е. слияние двух строк. Размер строки динамически увеличивается в процессе работы со строкой по мере необходимости.
Я реально не могу понять, прошу помощи у гуру этого форума, сейчас экзамен, умоляю вас помогите, за раниее спасибо...

Добавлено через 1 час 10 минут
Я попытался сделать небольшие наброски но они не внушают доверия
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
#include <iostream>
 
using namespace std;
 
class String {
private:
char *pStr;
int _size;
public:
String() {
    pStr = NULL;
    _size = 0;
}
String(char *str) {
    _size = strlen(str) + 1;
    pStr = new char[_size];
strcpy(pStr, str);
}
 int size() {
return _size;
}
~String() {
delete []pStr;
 }
friend ostream &operator << (ostream &os, String &obj) {
    for(int i = 0; i < obj.size(); i++)
    os <<obj.pStr[i];
return os;
}
};
int main(int argc, char *argv[]) {
    String str("Blablabla");
    cout << str;
return 0;
}
Можите отредактировать правильно, и если не трудно комментарии или просто объяснить как все делается

Добавлено через 19 минут
Вот еще один пример но я его в нете нашел, не знаю как он подойдет или нет?
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
47
48
49
50
class string {
      // ...
public:
      // ...
      void replace(const char*, const char*, bool = false, int = 0);
      void replace(const string&, const string&, bool = false, int = 0);
      // ...
};
 
void string::replace(const char *s1, const char *s2, bool replaceAll, int n)
{
      const int len = strlen(p->s);
      const int len1 = strlen(s1);
      const int len2 = strlen(s2);
      if(len == 0 || len1 == 0 || len1 > len || n + len1 > len)
            return;
      int * numpos = new int[len / len1 + 1];
      int pos1 = 0;
      do
            if((n = find(s1, n)) != npos)
                  numpos[pos1++] = n++;
      while(n != npos && replaceAll);
      if(!pos1)
      {
            delete[] numpos;
            return;
      }
      char * newstr = new char[len + (len2 - len1) * pos1 + 1];
      int i;
      for(n = 0, i = 0, int pos2 = 0; i < len; ++n, ++i)
            if(pos2 == pos1 || i < numpos[pos2])
                  newstr = p->s[n]
            else
            {
                  for(int j = 0; j < len2; ++i, ++j)
                        newstr = s2[j];
                  ++pos2;
                  --i;
                  n += len1 - 1;
            }
      newstr = '\0';
      delete[] p->s;
      p->s = newstr;
      delete[] numpos;
}
 
void string replace(const string& x1, const string& x2, bool replaceAll, int n)
{
      replace(x1.p->s, x2.p->s, replaceAll, n);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 13:07     Класі String
Посмотрите здесь:

C++ Здравствуйте! Создал класс std::string. Не создается объкт типа string... Подскажите в чем причина?
C++ Где и почему используют ту или иную строку std::string, char[], System::String^ ?
C++ Как используя C-String а потом и String class варьировать вывод?
C++ сохранение/чтение map<string,string*> в файл
C++ Ошибка в типе данных 'String' and 'System::String'
C++ Идентификатор string не определён при наличии #include <string>
C++ Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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