si, si mal no recuerdo era un typedef de basic_string<char,char_traits<char>,allocator<char> > (lo de char es por que podés usar por ejemplo wchar_t para unicode)
podrías hacer una clase con o sin template para char o wchar_t, obviá el asunto del allocator y a lo sumo podrías copiarle la interface ...
podrías hacer algo así :
class myString
{
public:
/////////////////
void append(const char* str)
{
if (str)
{
int len = strlen(str);
_data = (char*) realloc(_data,strlen(str)+_strlen);
_strlen+=len;
strcat(_data,str);
}
}
/////////////////
myString(const char* str): _strlen(1),_data(0)
{
append(str);
}
/////////////////
myString():_strlen(1),_data(0){}
/////////////////
size_t length(){
return _strlen;
}
/////////////////
char* c_str(){
return _data;
}
/////////////////
~myString(){
if (_data) free(_data);
}
/////////////////
inline myString& operator+=(const char* str){
append(str);
return *this;
}
/////////////////
inline myString& operator+=(myString& str){return this->operator+=(str.c_str());}
inline myString& operator=(const char* str){return this->operator+=(str);}
/////////////////
private:
size_t _strlen;
char* _data;
};
y se podría testear así :
int main()
{
myString a,b("como estas ?");
a = "Hola ";
a+=b;
a+="\n";
std::cout << a.c_str();
}
eso sería algo básico, sin soporte de wchar_t, sin allocator, sin ... emhh, se entiende xD
lo suficientemente incompleto como para que el ejemplo funcione bien xP
Saludos ~