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

Классы и компоненты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ функции для шифрации и дешифрации некоторого текста http://www.cyberforum.ru/cpp-beginners/thread134618.html
добрый вечер.... нужна помощь....срочно:( Фраза шифруется следующим образом: посе первых двух символов вставляется слог БУ,после следующих двух вставляется КА, это повторяется до тех пор, пока...
C++ Написать и протестировать функцию STR_CMP(str1,str2) добрый день... очень нужна помощь... Написать и протестировать функцию STR_CMP(str1,str2), которая сравнивает строки str1 и str2. Функция должна работать для русских букв, возвращать 1, если... http://www.cyberforum.ru/cpp-beginners/thread134617.html
C++ Отсортировать элементы каждой строки квадратной матрицы размерностью N по убыванию.
добрый день.... нужна ваша помощь.... Отсортировать элементы каждой строки квадратной матрицы размерностью N по убыванию. Значение N программа должна запрашивать в диалоговом режиме, память...
Непонятка с функцией(ошибка в коде) C++
Необходимо вычислить значения нескольких сумм с помощью функций в следующей функции: y=a+4*sum J=2, N+1(3*J^2+J+2)/4+3*sum J=1,N(2*J+3);J - начальное значение суммы, следовательно N - конечное....
C++ Ошибка при запуске... http://www.cyberforum.ru/cpp-beginners/thread134591.html
Всем привет. помогите пожалуйста довести до ума программку... Суть в том, что построение проходит успешно, а при попытке запуска выдаёт ошибку типа "память не может быть read" Программа должна...
C++ Как сделать переменную типа char именем файла Есть переменная(массив) типа char с произвольным количеством символов внитри Как сделать так чтобы когда я создаю файл к примеру таким кодом ofstream myfile; myfile.open ("file_name.txt"); ... подробнее

Показать сообщение отдельно
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.05.2010, 13:28
Решение
Файл String.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//-------------------------------------------------------------
class String {
private:
char *ch_str;
public:
String(const char *buff);           //конструктор с параметром.
String(const String& p);           //конструктор копирования.
const String& operator = (const String& p);  //операция присваивания.
const String& operator = (const char *buff);  //операция присваивания.
virtual ~String();            //Деструктор.
unsigned int len();           //Длинна строки.
operator char*();             //преобразования к char *
operator const char*();       //преобразования к const char *
char& operator [](int index); //индексация.
};
//--------------------------------------------------------------
Файл String.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
#include <string.h>
#include "String.h"
//конструктор с параметром.
String::String(const char *buff){ ch_str = new char[strlen(buff)+1]; strcpy(ch_str,buff); }
//конструктор копирования.
String::String(const String& p){ ch_str = new char[strlen(p.ch_str)+1]; strcpy(ch_str,p.ch_str);}
//операция присваивания.
const String& String::operator = (const String& p){
if(&p==this)return *this;   
delete []ch_str;
ch_str = new char[strlen(p.ch_str)+1]; strcpy(ch_str,p.ch_str);
return *this;
}
//операция присваивания.
const String& String::operator = (const char *buff){    
delete []ch_str;
ch_str = new char[strlen(buff)+1]; strcpy(ch_str,buff);
return *this;
}
 
//Деструктор.
String::~String(){ delete[]ch_str;}
//Длинна строки.
unsigned int String::len(){return strlen(ch_str);}           
//преобразования к char *
String::operator char*(){return ch_str;}  
//преобразования к const char *          
String::operator const char*(){return ch_str;}    
char&String::operator [](int index){return ch_str[index];}
Файл 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
#include <iostream>
#include "String.h"
using namespace std;
 
//клиентская часть.
int main(){
String obj = "Genius Ignat";
 
cout<<(const char*)obj<<endl;
String T_obj = obj;
unsigned int len = T_obj.len();
for(int i = 0 ; i < len; i++ )cout<<T_obj[i];
 
cout<<endl;
String UnkObj = "COM tech";
 
cout<<(const char*)UnkObj<<endl;
 
T_obj = UnkObj;
cout<<(const char*)T_obj<<endl;
T_obj ="End Sesion";
cout<<(const char*)T_obj<<endl;
 
return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru