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

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

Войти
Регистрация
Восстановить пароль
 
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
#1

Создать класс String - C++

21.11.2014, 00:33. Просмотров 942. Ответов 4
Метки нет (Все метки)

Есть такое задание.
//Создать консольное приложение, содержащее реализацию и практическое применение класса Строка. Данный класс должен быть основан на динамическом расширяемом массиве символов. Функциональность класса:
//1. Инициализация строки.
//2. Изменение строки.
//3. Возвращение строки.
//4. Получение длинны строки.
//5. Добавление строки к существующей.
//6. Вставка символа в указанную позицию строки.
//7. Вывод на экран ANSII кодов строки.
//8. Перевод символов строки в большой регистр.
//9. Перевод символов строки в маленький регистр.
Придумал решение первых 5 заданий, помогите с остальным. Вот что надумал.

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
#include <string.h>
using namespace std;
 
class String                
{
private:
    char* S;    
    int len; 
 
public:
    String();
    String(char* s); 
    String(const String& s); 
    ~String(){  delete [] S;}  
 
    const char*GetStr()const { return S;}
    const int GetLen()const { return len;}
    String operator+(const String&);
    String&operator=(const String&);
    operator char*() { return S; }
    void SetStr() 
    {
        if(S)   delete[]S;
        char a[256]; 
        cout<<"Введите строку\n";
        cin.getline(a,256); 
        len=strlen(a)+1;
        S = new char[len];
        strcpy(S,a); 
    }
    void SetStr2(char*str) 
    {
        if(S) delete[]S;
        len=strlen(str)+1;
        S = new char[len]; 
        strcpy(S, str); 
    }
};
 
String::String()
{
    S = 0;       
    len = 0;
}
 
String::String(char* s)
{
    len = strlen(s);
    S = new char[len + 1];
    strcpy(S, s);           
}
 
String::String(const String& s)
{
    len = s.len;
    S = new char[len + 1];  
    strcpy(S, s.S);
}
 
String String::operator+(const String &str)
{                        
    String s;
    s.len = len + str.len;      
    s.S = new char[s.len + 1];
    strcpy(s.S, S);          
    strcat(s.S, str.S);      
    return s;                   
}
 
String& String::operator=(const String &str)
{                       
     if(this == &str) 
        return *this;
    if(len != str.len || len == 0)
    {
        delete [] S;      
        len = str.len;        
        S = new char[len + 1];  
    }
    strcpy(S, str.S);    
    return *this;               
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 00:33     Создать класс String
Посмотрите здесь:

Создать класс String - C++
Здравствуйте! HELP!!! Задание:Создать класс String, реализующий работу со строчками с учетом числа обращений к ним (со...

Создать строковый шаблонный класс String - C++
Сделайте класс String шаблонным. В исходном классе замените конструктор с 1 параметром на конструктор с 2 параметрами (указатель на массив...

Что нужно знать, чтобы создать класс String? - C++
Здравствуйте! Подскажите, про какие функции и разделы прочитать, чтобы сделать данное задание: &quot;Разработать класс String определив для...

Создать класс String – строку, используя динамическую память - C++
Создать класс String – строку, используя динамическую память. Определить операторы &quot;+&quot; –сложение строк, &quot;=&quot; и &quot;+=&quot; – присваивания, как...

Создать класс. Символьное поле должно быть задано как объект класса string - C++
решите задачку!) 6. Создать класс. Символьное поле должно быть задано как объект класса string. Написать конструктор по умолчанию,...

Класс <string> - C++
Подскажите пожалуста, как переписать из строки str первые n байтов в строку str1, а остальные в строку str2?

класс string - C++
товарищи,пишу лабу,простенькую,в принципе,но почему-то фэйлюсь. в ведённой строке за один просмотр найти все слова,состоящие только из...

Класс String - C++
добрый день. У кого-то есть программа которая создаёт класс String – строку, используя динамическую память. Определить операторы &quot;+&quot;...

класс String - C++
//main #include &lt;iostream&gt; #include &quot;header.h&quot; const int ArSize = 10; const int MaxLen =81; int main() { using std::cout; ...

Класс string - C++
Добрый день, друзья. #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main (void) { string obj = &quot;one...

Класс String - C++
вот файл реализации String::String() //конструктор на 80 { size = 80; str = new char; for (int i = 0;i &lt; size;i++) ...

Класс String - C++
Всем привет, помогите пожалуйста. Ошибка на этапе выполнения. Скомпилируйте программу, с помощью стрелочек(клавиш) перейдите на 2 пункт...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3118 / 1920 / 208
Регистрация: 13.01.2012
Сообщений: 7,350
21.11.2014, 10:54     Создать класс String #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
оставшиеся задания выглядят совсем не сложными по сравнению с теми которые вы уже решили.
//6. Вставка символа в указанную позицию строки. - bool insert(char c, int pos) {if (pos > len) return false; S[pos] = c; return true;}
//7. Вывод на экран ANSII кодов строки. - я полагаю надо просто возвращать символ из указанной позиции и если это проблематично для вызывающего кода приводить код символа к int
//8. Перевод символов строки в большой регистр. - есть функция strupr но могут быть проблемы с русским
//9. Перевод символов строки в маленький регистр. - есть функция strlwr но могут быть проблемы с русским
+ учтен ли у вас вариант когда в конструктор или оператор= передают строку у которой S = 0
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
21.11.2014, 22:25  [ТС]     Создать класс String #3
Цитата Сообщение от vxg Посмотреть сообщение
+ учтен ли у вас вариант когда в конструктор или оператор= передают строку у которой S = 0
Имеется в виду, создание строки без элементов?
Цитата Сообщение от vxg Посмотреть сообщение
//6. Вставка символа в указанную позицию строки. - bool insert(char c, int pos) {if (pos > len) return false; S[pos] = c; return true;}
при этом мы просто заменим символ, а как можно реализовать вставку с увеличением длины строки?
Просто я сомневаюсь, что корректно отработает вариант перевыделения памяти (delete[]/new[]).
vxg
Модератор
3118 / 1920 / 208
Регистрация: 13.01.2012
Сообщений: 7,350
24.11.2014, 09:28     Создать класс String #4
Цитата Сообщение от EfimKR Посмотреть сообщение
Имеется в виду, создание строки без элементов?
либо без элементов либо вообще передача нулевого указателя
Цитата Сообщение от EfimKR Посмотреть сообщение
сомневаюсь, что корректно отработает
почему сомневаетесь? выделяете рядом новый кусок памяти размером как было + 1, копируете в нее все до позиции, копируете символ, копируете все после позиции, удаляете исходный кусок памяти, присваиваете указателю новый кусок памяти
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
24.11.2014, 20:12  [ТС]     Создать класс String #5
vxg, уже сделал.
Yandex
Объявления
24.11.2014, 20:12     Создать класс String
Ответ Создать тему
Опции темы

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