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

Класі String - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычисление значения функции http://www.cyberforum.ru/cpp-beginners/thread1040857.html
помогите под цифрой 1 на фото если не понятно. то во втором уравнении в знаменателе х^3
C++ "Программа оформляется как набор модулей" Привет. Делаю лабораторную по программированию, точнее уже сделал. Но в задании написано: Программа оформляется как набор модулей: главный, модуль работы со строками, модуль работы с файлами. Как это понимать? Что такое модуль? http://www.cyberforum.ru/cpp-beginners/thread1040856.html
Необходимо составить программу, выводящую на экран матрицу данного вида (подробнее внутри) C++
Здравствуйте. Необходимо составить программу (желательно дополнить мой фрагмент программы, приведенный ниже), которая выводит на экран квадратную матрицу A размером n × n . Входные данные: n – порядок матрицы. Значение n вводится с клавиатуры, является нечетным целым числом в диапазоне 2 < n < 24 . Выходные данные: матрица A – двумерный целочисленный массив. Значения элементов матрицы A...
C++ Целочисленная арифметика
Дано натуральное двухзначное число. Получить трехзначные числа, образованные при помощи цифр данного числа и цифры 0.
C++ Рекурсия http://www.cyberforum.ru/cpp-beginners/thread1040821.html
Привет. Только что узнал,что такое рекурсия и понял как она работает,но написать участок кода с рекурсией мозгов не хватает. Нужно написать внешнюю функцию involution,которая принимает аргумент из main,равный 2.Она возводит его в квадратную степень с помощью рекурсии,пока не получится число 16 и возвращает 16 в main. В принципе всё просто,но у меня возникли проблемы. И прошу писать простым...
C++ Задача с абстрактным типом данных Разработайте и реализуйте абстрактный тип данных представления стоимости вещи, выраженной в долларах и центах. После завершения реализации этого АТД напишите клиентскую функцию, вычисляющую сдачу, если за предмет стоимостью Y долларов заплачено X долларов. подробнее

Показать сообщение отдельно
Sylar
 Аватар для Sylar
2 / 2 / 0
Регистрация: 06.06.2012
Сообщений: 119
14.12.2013, 13:07     Класі String
Как разработать класс 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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru