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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задан номер мобильного телефона - определить, какие цифры отсутствуют в этом номере http://www.cyberforum.ru/cpp-beginners/thread889348.html
Задан номер мобильного телефона. Определить, какие цифры отсутствуют в этом номере. Помогите!
C++ В матрице из действительных чисел найти сумму элементов в каждом столбике Помогите пожалуйста написать программу на двумерный массив. Условие: В матрице из действительных чисел найти сумму элементов в каждом столбике. Результат записать в одномерный массив. Вывести начальную матрицу и полученный одномерный массив на экран. Спасибо http://www.cyberforum.ru/cpp-beginners/thread889344.html
Динамический массив (замена элементов по правилу) C++
Помогите пожалуйста написать программу на одномерный динамический массив. Условие: Если в заданном массиве хотя бы одно значение элементов принадлежит промежутку , то все элементы, которые не принадлежат данному промежутку заменить на z. Значение x,y,z пользователь вводит с клавиатуры Использовать динамический массив. Спасибо.
C++ Рекурсия и указатель
Добрый день. Допустим, у меня есть указатель А. И равен он, допустим, 32. Вот есть у меня функция, которая чуток бегает по другим элементом. И функция рекурсивная, т.е.: 32 ---8 -----4
C++ Горячие клавиши http://www.cyberforum.ru/cpp-beginners/thread889319.html
Подскажите как сделать горячие клавиши для всей программы?? В моём случае при нажатии на 'Q' - выход из программы И при нажатии на 'E' - Пишем сообщение "123" Спасибо заранее!
C++ Составьте блок схему (Дана матрица m*n. На экран вывести матрицу, элементы которой расположены по возрастанию) Дана матрица m*n. На экран вывести матрицу, элементы которой расположены по возрастанию. решение: #include<conio.h> #include<iostream.h> #include<iomanip.h> #include<math.h> #include<string.h> #include<stdio.h> #include<stdlib.h> подробнее

Показать сообщение отдельно
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
03.06.2013, 16:55     Создать класс MyString
MyString.h
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
#ifndef _MYSTRING_H_
#define _MYSTRING_H_
#include <string>
#include <iostream>
using namespace std;
 
class MyString
{
    private:
        char *str;    //строка
    public:
        MyString(char * _str);   //конструктор с параметром в виде строковой константы
        MyString();              //конструктор по-умолчанию
        MyString(MyString& s);   //конструктор копирования
        ~MyString();             //деструктор
        void Print();            //метод печати строки на экран
        MyString operator+(MyString& s);  //операция + для склеивания двух строк
        MyString& operator=(MyString &s); //операция = (присвоение строк)
        MyString operator^(int value);
        MyString& operator+=(MyString &s);//операция += для склеивания двух строк
        char& operator[](int value);  //операция [] для доступа к отдельным символам строки
        bool operator==(MyString& s);  //операция проверки на равенство ==
        bool operator!=(MyString& s);  //операция проверки на неравенство !=
        friend ostream& operator<<(ostream& os, MyString& c);
        friend istream& operator>>(istream& is, MyString& c);
        bool Find(char *_str);         //метод поиска подстроки в строке
        bool FindSymbol(char symbol);  //метод поиска символа в строке
};
 
#endif
MyString.cpp
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
84
85
86
87
88
89
90
91
92
#include "MyString.h"
#include <iostream>
using namespace std;
 
MyString::MyString(char *_str):str(new char[strlen(_str)+1])   
{
    strcpy(this->str,_str);
}
MyString::MyString():str(new char[1]){str[0]=0;}   
MyString::MyString(MyString &s):str(new char[strlen(s.str)+1])
{
    strcpy(this->str,s.str);
}
MyString::~MyString()
{
    delete [] this->str;
}
 
void MyString::Print()
{
    cout<<this->str<<endl;
}
MyString MyString::operator+(MyString& s)
{
    char *buf=new char[strlen(this->str)+strlen(s.str)+1];   
    strcpy(buf,this->str);
    return MyString(strcat(buf,s.str));    
}
MyString& MyString::operator=(MyString& s)
{
    delete[] this->str;       
    this->str=new char[strlen(s.str)+1];
    strcpy(this->str,s.str);
    return *this;
}
MyString& MyString::operator+=(MyString &s)
{
    *this=*this+s;
    return *this;
}
char& MyString::operator[](int value)
{
    return this->str[value];
}
bool MyString::operator==(MyString& s)
{
    if (strcmp(this->str,s.str)==0)
        return true;
    else
        return false;
}
bool MyString::operator!=(MyString& s)
{
    if (strcmp(this->str,s.str)==0)
        return false;
    else
        return true;
}
ostream& operator<<(ostream& os, MyString& c)
{
    return os<<c.str;
}
istream& operator>>(istream& is, MyString& c)
{
    char buf[2048];
    is>>buf;
    delete [] c.str;
    c.str=new char[strlen(buf)+1];
    strcpy(c.str,buf);
    return is;
}
bool MyString::Find(char *_str)
{
    if (strstr(this->str,_str)!=NULL)
        return true;
    else
        return false;
}
bool MyString::FindSymbol(char symbol)
{
    for (int i=0;i<strlen(this->str);i++)
        if (str[i]==symbol)
            return true;
    return false;
}
MyString MyString::operator^(int value)
{
    MyString buf;
    for (int i=0;i<value;i++)
        buf+=*this;
    return buf;
}
main.cpp
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
#include <iostream>
#include "MyString.h"
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL,"rus");
    MyString N("Абракадабра");
    MyString O;
    MyString P(N);
    N.Print();
 
    MyString I("Строка");
    O=N+I;
    O+=I;
    O[0]='Б';
 
    if (N==P)
        cout<<"N=P"<<endl;;
    if (N!=P)
        cout<<"N<>P"<<endl;;
 
    MyString R;
    cout<<"Введите R:"<<endl;
    cin>>R;
    cout<<R<<endl;
 
    if (R.FindSymbol('к'))
        cout<<"В строке R содержится символ 'к'"<<endl;
    if (R.Find("брак"))
        cout<<"В строке R содержится подстрока 'брак'"<<endl;
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru