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

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

Войти
Регистрация
Восстановить пароль
 
Vladislavv
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 98
#1

класс объединение строк - C++

25.11.2014, 19:41. Просмотров 130. Ответов 0
Метки нет (Все метки)

Добавить в строковый класс функцию, которая создает строку, содержащую общие символы для двух строк, перегружается оператор *
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
#include <iostream>
#include <cstring>
using namespace std;
 
class _string{
char *_str;
int _len;
public:
    operator char*() { return _str; }
 
    const char*GetStr()const 
    { 
        cout<<_str;
        return _str;        
    }
        _string():_str(NULL), _len(0){}
 
    _string(char *str){
        _len=strlen(str);
        _str=new char[_len+1];
        strcpy (_str, str);
    }
 
    ~_string(){
    delete[]_str;
    }
 
    _string (const _string& a):_len(a._len){
        _len=a._len;
        _str=new char[a._len+1];
        strcpy(_str,a._str);
    }
 
    _string& operator=(const _string& a){
        if(this==&a)
            return *this;
        if(_len!=a._len||_len==0){
            delete[]_str;
            _len=a._len;
            _str=new char [_len+1];
            strcpy (_str, a._str);
             return *this; 
        }
            
    }
 
    _string operator*(_string &a){
        _string t;
        t._len=this->_len+a._len;
        t._str=new char[t._len+1];
        strcpy(t._str,strpbrk(this->_str, a._str));
        while (strpbrk(this->_str, a._str)!=NULL)
        strcat(t._str,strpbrk(this->_str, a._str));
        /*t._len=_len+a._len;
        t._str=new char[t._len+1];
        strcpy(t._str, _str);
        strcat(t._str,a._str);
        */  return t;
    }
};
 
void main(){
_string a,b,c;
a="ya";
b="da";
c=a*b;
c.GetStr();
}
возникло 2 вопроса:
1) почему игнорируется return
C++
1
2
3
4
5
const char*GetStr()const 
    { 
        cout<<_str;
        return _str;        
    }
2) как правильно оформить функцию, которая создает строку, содержащую общие символы для двух строк
C++
1
2
3
4
5
6
7
8
_string operator*(_string &a){
        _string t;
        t._len=this->_len+a._len;
        t._str=new char[t._len+1];
        strcpy(t._str,strpbrk(this->_str, a._str));
        while (strpbrk(this->_str, a._str)!=NULL)
        strcat(t._str,strpbrk(this->_str, a._str));
        return t;
этот вариант пишет: "инструкция по адресу не может обратиться к памяти по адресу. память не может быть "written""
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 19:41     класс объединение строк
Посмотрите здесь:

Объединение строк, конвертация данных C++
C++ Объединение строк как массивов
Объединение строк C++
как правильно произвести объединение строк? C++
C++ ошибка "выражение должно представлять класс, структуру или объединение"
Объединение строк и запись в файл C++
С++ объединение строк в тексте C++
C++ Объединение строк в строковом классе
Выполнить объединение двух строк с помощью перегрузки оператора (*) C++
выражение слева от ".name" должно представлять класс, структуру или объединение (Парочка ошибок) C++
Объединение строк C++
Объединение определенных символов строк и создание из их нового массива? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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