ostream& operator<<(ostream& s, string& x) { return s << x.p->s << " [" << x.p->n << "]\n"; }
Операция ввода использует стандартную функцию ввода символьной
строки (#8.4.1).
istream& operator>>(istream& s, string& x)
{
char buf[256];
s >> buf;
x = buf;
cout << "echo: " << x << "\n"; return s; }
Для доступа к отдельным символам предоставлена операция
индексирования. Осуществляется проверка индекса:
void error(char* p)
{
cerr << p << "\n"; exit(1); } char& string::operator[](int i) { if (i<0 || strlen(p->s)s[i];
}