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

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

Войти
Регистрация
Восстановить пароль
 
Alika07
4 / 4 / 0
Регистрация: 04.12.2012
Сообщений: 39
#1

строки: работа с динамической памятью, перегруженные конструкторы - C++

17.02.2013, 22:43. Просмотров 537. Ответов 1
Метки нет (Все метки)

Привет!
Есть задача:
Разработать класс String, который в дальнейшем будет использоваться для работы со строками.
Класс должен содержать:
конструктор по умолчанию, позволяющий создать строку длиной 80 символов;
конструктор, позволяющий создавать строку произвольного размера;
конструктор, который создаёт строку и инициализирует её строкой, полученной от пользователя.
Класс должен содержать методы для ввода строк с клавиатуры и вывода строк на экран.

Совсем не могу представвить, что нужно делать с динамическими строками, как их объявлять в классе и работать с ними в конструкторе.
Единственная моя идея - это использовать malloc.
Пожалуйста, помогите разобраться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос строки: работа с динамической памятью, перегруженные конструкторы (C++):

Работа с динамической памятью - C++
Привет всем. Я недавно начал изучать C++ и наткнулся на ошибку:"двумерный динам.exe вызвал срабатывание точки останова" при очистке...

Работа с динамической памятью! - C++
Привет! Такая задача: Необходимо выделить(по N Кб) и освободить всю динамическую память. Определить время выделения и освобождения, и объем...

Работа с динамической памятью в цикле - C++
Всем привет. Есть переменная data, созданная динамически На каждой итерации цикла в нее записывается информация char* data =...

Работа с динамической памятью через указатели. - C++
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Есть такая задача: Создать массив из N целых чисел, N вводит...

Работа с динамической памятью через указатели. Загадочная ошибка. - C++
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Есть такая задача: Создать массив из N целых чисел, N вводит...

Работа с динамической памятью через указатели. Загадочная ошибка. - C++
Программа запускается и нормально исполняется, но в конце появляется ошибка. Мог бы кто подсказать в чем проблема? Пишу в Microsoft...

1
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 06:36 #2
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
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
 
class String
{
    unsigned int string_size;
    char* ptr;
public:
    String(){
        string_size = 80;
        ptr = new char[string_size];   // можно, конечно, использовать malloc
        ptr[0] = '\0';
    }
    String(int _size) {
        string_size = _size;
        ptr = new char[string_size];
        ptr[0] = '\0';
    }
    String(char* str) {
        string_size = 1;
        char* curstr = str;
        while (*curstr) {
            ++curstr;
            ++string_size;
        }
        ptr = new char[string_size];
        strncpy(ptr, str, string_size);
        ptr[string_size - 1] = '\0';
    }
    ~String(){
        string_size = 0;
        delete[] ptr;
    }
    friend std::ostream& operator << (std::ostream& os, const String& s);
    friend std::istream& operator >> (std::istream& in, String& s);
};
 
std::ostream& operator << (std::ostream& os, const String& s){
    os << s.ptr;
    return os;
}
 
std::istream& operator >> (std::istream& in, String& s){
    in >> s.ptr;
    return in;
}
 
 
 
int main()
{
    String s1, s4;
    String s2(20);
    String s3("Summer");
 
    std::cout << s3 << std::endl;
    std::cin >> s1;
    std::cout << s1 << std::endl;
    std::cout << s2 << std::endl;   // пустые строки, т.к. мы их не инициализировали
    std::cout << s4 << std::endl;
    system("pause");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 06:36
Привет! Вот еще темы с ответами:

Разобраться в принципе работы задачч. (Работа с динамической памятью через указатели. ) - C++
Вот условие задачи: Создать массив из N целых чисел, N вводит пользователь. Заполнить массив случайным образом в диапазоне от 1 до 12....

Работа с динамической памятью. Ошибка в функции getline через посимвольный ввод - C++
Было дано вот такое задание: В этой задаче вам необходимо написать функцию getline, которая читает строку из стандартного потока ввода...

Почему в данном случае работа с заранее выделенной памятью медленнее чем с динамической? - C++
Написал функцию которая на основе списка выделяет память и при каждом вызове возвращает указатель на следующий элемент для объекта. Код...

Ошибка с динамической памятью - C++
Очень прошу помочь исправить ошибку в области дин.памяти. Проблема: 1. Шаг Создаю массив для записи 2. Шаг удаляю элемент под...


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

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

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