Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sylar
2 / 2 / 0
Регистрация: 06.06.2012
Сообщений: 120
#1

Класі String - C++

14.12.2013, 13:07. Просмотров 388. Ответов 0
Метки нет (Все метки)

Как разработать класс 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);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 13:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Класі String (C++):

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()? - C++
Понятное дело, что всё обсуждение будет вертеться вокруг аналога NULL. char* f_0 () { return NULL; } char** f_1 () { ...

Как используя C-String а потом и String class варьировать вывод? - C++
Дана задача: при вводе полного И.О.Ф. (в таком порядке) выводить Ф, И и О(только первую букву и .). И если О не задано - выводить только...

Как преобразовать char* в string и вывести переменную string на экран? - C++
for (int k = 0; k &lt; 10; k++) { int x = (int)rand() / RAND_MAX + rand() % 6 + 2; char *chars = new char; ...

Есть ли аналог Map <String,String> чтобы передавать его как указатель на данные? - C++
Добрый день, подскажите, есть ли аналог Map &lt;String,String&gt; чтобы передавать его как указатель на данные? Заранее спасибо!

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 13:07
Привет! Вот еще темы с ответами:

Заменить использование istringstream на вариант из string или string.h - C++
Как заменить 14 строку функцией из &lt;string&gt; или &lt;string.h&gt; и без &lt;sstream&gt; {deleted} П.5.19.Правил Запрещено создавать темы в виде...

Идентификатор string не определён при наличии #include <string> - C++
Я ввёл библеотеку #include &lt;string&gt;, но не смотря на это мне выдаёт ошибку: &quot;индефикатор string не определён&quot;. Объясните, пожалуйста, это...

Здравствуйте! Создал класс std::string. Не создается объкт типа string... Подскажите в чем причина? - C++
#include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; //using namespace std; class string { private: int...

сохранение/чтение map<string,string*> в файл - C++
Доброго времени суток, Нужно сделать БД для индексации содержимого текстовых файлов, сначала решил, что все просто: читаем файл и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru