#include <cstring>
#include <iostream>
using namespace std;
class RCharLista
{
private:
unsigned ilosc;
char **obiekt;
public:
operator unsigned()const { return ilosc; }
const char *operator[](unsigned p)const { return obiekt[p]; }
RCharLista():ilosc(0),obiekt(0) {}
~RCharLista()
{
for(unsigned i=0;i<ilosc;++i) delete[] obiekt[i];
delete[] obiekt;
}
void dodaj(const char *rzecz)
{
char **nowy=new char *[ilosc+1];
memcpy(nowy,obiekt,ilosc*sizeof(char*));
unsigned rozmiar=strlen(rzecz)+1;
nowy[ilosc]=new char[rozmiar];
memcpy(nowy[ilosc],rzecz,rozmiar);
delete[] obiekt;
obiekt=nowy;
++ilosc;
}
RCharLista &operator<<(const char *rzecz) { dodaj(rzecz); return *this; }
};
inline ostream &operator<<(ostream &s,const RCharLista &R) { for(unsigned i=0;i<R;++i) s<<R[i]<<endl; return s; }
int main()
{
char buf1[]="umiesz tak?";
char buf2[]="... niemozliwe?";
RCharLista lol;
lol.dodaj(buf1);
lol.dodaj("Nie, nie umiem?");
lol<<"A to juz by bylo zupelnie ..."<<buf2;
cout<<"LOL:"<<endl<<lol<<"---"<<endl;
return 0;
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFJDaGFyTGlzdGEKICB7CiAgIHByaXZhdGU6CiAgIHVuc2lnbmVkIGlsb3NjOwogICBjaGFyICoqb2JpZWt0OwogICBwdWJsaWM6CiAgIG9wZXJhdG9yIHVuc2lnbmVkKCljb25zdCB7IHJldHVybiBpbG9zYzsgfQogICBjb25zdCBjaGFyICpvcGVyYXRvcltdKHVuc2lnbmVkIHApY29uc3QgeyByZXR1cm4gb2JpZWt0W3BdOyB9CiAgIFJDaGFyTGlzdGEoKTppbG9zYygwKSxvYmlla3QoMCkge30KICAgflJDaGFyTGlzdGEoKQogICAgIHsKICAgICAgZm9yKHVuc2lnbmVkIGk9MDtpPGlsb3NjOysraSkgZGVsZXRlW10gb2JpZWt0W2ldOwogICAgICBkZWxldGVbXSBvYmlla3Q7CiAgICAgfQogICB2b2lkIGRvZGFqKGNvbnN0IGNoYXIgKnJ6ZWN6KQogICAgIHsKICAgICAgY2hhciAqKm5vd3k9bmV3IGNoYXIgKltpbG9zYysxXTsKICAgICAgbWVtY3B5KG5vd3ksb2JpZWt0LGlsb3NjKnNpemVvZihjaGFyKikpOwogICAgICB1bnNpZ25lZCByb3ptaWFyPXN0cmxlbihyemVjeikrMTsKICAgICAgbm93eVtpbG9zY109bmV3IGNoYXJbcm96bWlhcl07CiAgICAgIG1lbWNweShub3d5W2lsb3NjXSxyemVjeixyb3ptaWFyKTsKICAgICAgZGVsZXRlW10gb2JpZWt0OwogICAgICBvYmlla3Q9bm93eTsKICAgICAgKytpbG9zYzsKICAgICB9CiAgIFJDaGFyTGlzdGEgJm9wZXJhdG9yPDwoY29uc3QgY2hhciAqcnplY3opIHsgZG9kYWoocnplY3opOyByZXR1cm4gKnRoaXM7IH0KICB9OwppbmxpbmUgb3N0cmVhbSAmb3BlcmF0b3I8PChvc3RyZWFtICZzLGNvbnN0IFJDaGFyTGlzdGEgJlIpIHsgZm9yKHVuc2lnbmVkIGk9MDtpPFI7KytpKSBzPDxSW2ldPDxlbmRsOyByZXR1cm4gczsgfQoKaW50IG1haW4oKQogIHsKICAgY2hhciBidWYxW109InVtaWVzeiB0YWs/IjsKICAgY2hhciBidWYyW109Ii4uLiBuaWVtb3psaXdlPyI7CiAKICAgUkNoYXJMaXN0YSBsb2w7CiAgIAogICBsb2wuZG9kYWooYnVmMSk7CiAgIGxvbC5kb2RhaigiTmllLCBuaWUgdW1pZW0/Iik7CiAgIGxvbDw8IkEgdG8ganV6IGJ5IGJ5bG8genVwZWxuaWUgLi4uIjw8YnVmMjsKCiAgIGNvdXQ8PCJMT0w6Ijw8ZW5kbDw8bG9sPDwiLS0tIjw8ZW5kbDsKICAgcmV0dXJuIDA7CiAgfQ==