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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Довести длину строки до заданной, вставляя пробелы между словами http://www.cyberforum.ru/cpp-beginners/thread1306523.html
Довести длинну строки до заданной вставляя пробелы меду словами . Напечатать все слова которые совпадают с ее первым словом. Пожалуйста Добавлено через 18 часов 0 минут Людиии
C++ Определять минимальную сумму между двумя соседними элементами массива Задание: Напишите программу, которая позволяет вводить динамический одно-мерный целочисленный массив и посредством вызова функции определять минимальную сумму между двумя соседними элементами массива. При передаче массива в функцию используйте указатели, а размерность передавайте по ссылке. Применение глобальных переменных категорически запрещено. http://www.cyberforum.ru/cpp-beginners/thread1306521.html
C++ Объясните работу указателей
Не могу въехать в тему указателей в с++.Как я понял указатель это та же переменная только значением является адрес. Дали в универе код, сижу над ним, никак не могу вникнуть. #include <iostream> using namespace std; int main() { int *q, n, *p; // здесь вроде как объявляем 2 указателя и переменную n = 100; p = &n; // &-используется для определения адреса по имени, т.е. приравниваем...
Переставить значения заданного одномерного массива C++
Помогите, пожалуйста, справиться с задачей! Нужно переставить значения заданного одномерного массива так, чтобы все нулевые значения оказались в конце массива, а ненулевые в начале. не нарушая порядок, в котором они следовали в исходном массиве.
C++ Написать функцию вычисления корней квадратного уравнения http://www.cyberforum.ru/cpp-beginners/thread1306514.html
Напишите функцию вычисления корней квадратного уравнения. Про-грамма должна принимать от пользователя коэффициенты, вызывать функцию, а затем выводить полученный результат. Параметрами функ-ции должны быть коэффициенты и корни уравнения. Такие аргументы как корни уравнения необходимо передавать по ссылке. Значение, воз-вращаемое функцией, должно передавать в вызывающую программу ин-формацию о...
C++ Заменить на 0 элементы массива только начал изучать програмирование на C++. Заменить на 0 элементы массива, расположенные справа от наибольшего. все данные целого типа, размер массива 10 чтение данных осуществлять из файла запись необходимой информации осуществлять в файл. заранее спасибо за помощь! подробнее

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

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

21.11.2014, 00:33. Просмотров 943. Ответов 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;               
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru