Может кому-то ещё пригодится
mstring.h
Spoiler:
Code: Select all
class mstring {
public:
void setString(const char*);
void addToString(const char*);
void operator+=(const char* str);
void operator+=(mstring& str);
operator char*() const {
return this->text;
}
mstring& operator=(const char* str);
mstring& operator=(mstring& str);
char* getString();
mstring();
mstring(char* str);
~mstring();
private:
char* text;
};
Spoiler:
Code: Select all
#include "mstring.h"
#include "string.h"
mstring::mstring() : text(NULL) {
}
mstring::mstring(char* str) {
this->setString(str);
}
void mstring::setString(const char* txt) {
text = new char[strlen(txt)+1];
strcpy(text, txt);
}
void mstring::operator+=(const char* str) {
this->addToString(str);
}
void mstring::operator+=(mstring& str) {
this->addToString(str.getString());
}
mstring& mstring::operator=(const char* str) {
this->setString(str);
return *this;
}
mstring& mstring::operator=(mstring& str) {
this->setString(str.getString());
return *this;
}
void mstring::addToString(const char* txt) {
// Определяем длину новой строки
int len = strlen(text)+strlen(txt)+1;
// Копируем существующую строку во временный массив
char* temp = new char[len];
strcpy(temp, text);
// Создаём новую строку
text = new char[len];
// Соединяем старую строку с новой
strcpy(text, temp);
strcat(text, txt);
// Удаляём временную строку
delete[] temp;
}
char* mstring::getString() {
return text;
}
mstring::~mstring() {
delete[] text;
}
Code: Select all
mstring str("My name is Nikolai.");
str += "Hello";
str += ", world!";
str += "Test!!!!";
// Строка: "My name is Nikolai. Hello, world! Test!!!"
str = "I am a programmer!!!";
// Строка: "I am a programmer!!!"
mstring str2;
str2 = "I learn PHP and C++!";
str = str2;
// Строка: "I learn PHP and C++!"
(char*)str; // Преобразование в тип char