Класс string на C++
Posted: Sat Jan 24, 2015 9:34 pm
Написал что-то вроде класса string для Kolibri на C++. Буду использовать для своей библиотеки viewtopic.php?f=33&t=2896
Может кому-то ещё пригодится
mstring.h
mstring.cpp
Как можно использовать:
Может кому-то ещё пригодится
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