Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

B6_9.cxx





#include <stream.hxx>#include <string.h> extern void exit(int);class string { struct srep { char* s; int n; }; srep *p; public: string(char *); string(); string(string &); string& operator=(char *); string& operator=(string &); ~string(); char& operator[](int i); friend ostream& operator<<(ostream&, string&); friend istream& operator>> (istream&, string&); friend int operator==(string &x, char *s) { return strcmp(x.p->s, s) == 0; } friend int operator==(string &x, string &y) { return strcmp(x.p->s, y.p->s) == 0; } friend int operator!=(string &x, char *s) { return strcmp(x.p->s, s)!= 0; } friend int operator!=(string &x, string &y) { return strcmp (x.p->s, y.p->s)!= 0; }}; string::string(){ p = new srep; p->s = 0; p->n = 1;} string::string(char* s){ p = new srep; p->s = new char[ strlen(s) +1]; strcpy(p->s, s); p->n = 1;}string::string(string& x){ x.p->n++; p = x.p;} string::~string(){ if (--p->n == 0){ delete p->s; delete p; }} string& string::operator=(char* s){ if (p->n > 1) { p->n--; p = new srep; } else if (p->n == 1) delete p->s; p->s = new char[ strlen(s)+1 ]; strcpy(p->s, s); p->n = 1; return *this;} string& string::operator=(string& x){ x.p->n++; if (--p->n == 0) { delete p->s; delete p; } p = x.p; return *this;} ostream& operator<<(ostream& s, string& x){ return s << x.p->s << " [" << x.p->n << "]\n";} istream& operator>>(istream& s, string& x){ char buf[256]; s>>buf; x = buf; cout << "echo: " << x << "\n"; return s;} void error(char* p){ cout << p << "\n"; exit(1);}char& string::operator[](int i){ if (i<0 || strlen(p->s)<i) error("index out of range"); return p->s[i];} main(){ string x[100]; int n; cout << "here we go\n"; for (n = 0; cin>>x[n]; n++) { string y; if (n==100) error("too many strings"); cout << (y = x[n]); if (y=="done") break; } cout << "here we go back again\n"; for (int i=n-1; 0<=i; i--) cout << x[i];}







Дата добавления: 2015-09-04; просмотров: 328. Нарушение авторских прав; Мы поможем в написании вашей работы!




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Studopedia.info - Студопедия - 2014-2026 год . (0.013 сек.) русская версия | украинская версия