КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пример. #include <string.h>
#include <string.h> #include <iostream.h> #include <fstream.h> using namespace std; void main(){ string str1(“ABCDEFGH”), str2, str3, str4, str5; // Присваивание. Прототип функции-оператора // string& operator =(const string& str) str2=str1; cout<<”str2: “<<str2<<endl; // Присваивание. Прототип функции-оператора // string& operator =(const char *str) str3=”a1b2c3d4e5”; cout<<”str3: “<<str3<<endl; // Присваивание. Прототип функции-оператора // string& operator =(char c) str4=’R’; cout<<”str4: “<<str4<<endl; // Доступ к символам строки cout<<”str1[3]: “<<str1[3]<<endl; // Будет выведено str1[3]: D cout<<”str1.at(2): “<<str1.at(2)<<endl; // Будет выведено str1.at(2): C // Ввод из файла. Файл data.txt содержит последовательность // символов 12345 ifstream inf(“data.txt”); inf>>str5; if(!inf){ cout<<”ERROR”<<endl; return; } cout<<”str5: “<<str5<<endl; // Добавление к строке str1+=str5; cout<<”str1+=str5: “<<str1<<endl; // Будет выведено str1+=str5: ABCDEFGH12345 }
Методы класса string. Класс string содержит множество методов, которые можно разделить на группы в соответствии с их функциональным назначением: получение характеристик строк; присваивание, добавление и обмен строк; вставка, удаление и замена строк; поиск строк, подстрок и символов в строках. Ниже приводится краткое описание методов. При этом используются следующие обозначения: size_type – тип, определенный в пространстве имен std и эквивалентный unsigned int; npos – статический член класса string, содержащий максимальное значение для типа size_type. size_type length() const – возвращает длину (количество символов) строки. size_type size() const – то же назначение, что и у метода length(). size_type max_size() const – возвращает максимальный возможный размер строки. size_type capacity() const – возвращает текущую емкость строки, т. е. количество символов, которые можно поместить в строку без перераспределения памяти. Перераспределение памяти под строки происходит автоматически по мере необходимости. Нужно помнить, что в результате динамического перераспределения памяти становятся недействительными все ссылки, указатели и итераторы (специальный контролируемый тип указателя), ссылающиеся на символы строки. Емкость строки может быть изменена и с помощью метода reserve(size_type n=0). bool empty() const – возвращает true, если строка является пустой, в противном случае возвращает false. string& assign(const string &s) – присваивает строку s вызывающей строке (то же самое, что и операция присваивания). string& assign(const string &s, size_type pos, size_type n) – присваивает вызывающей строке подстроку строки s, начиная с позиции pos и содержащую не более n символов. Если pos выводит за пределы строки, то выбрасывается исключение out_of_range. Если значение n выводит за пределы строки, то присваивается подстрока, начиная с позиции pos и до конца строки s. string& assign(const char *s, size_type n) – присваивает вызывающей строке подстроку С-строки s длиной n символов. string& append(const string &s) – к вызывающей строке добавляется строка s (действие эквивалентно операции +=). Если длина результата превосходит максимальную допустимую длину строки, то выбрасывается исключение length_error. string& append(const string &s, size_type pos, size_type n) – к вызывающей строке добавляется подстрока строки s, начиная с позиции pos и содержащая не более n символов. Если значения pos или n выводят за пределы строки s, то происходит то же, что и при вызове метода assign(). string& append(const char *s, size_type n) – к вызывающей строке добавляется подстрока С-строки s, содержащая n символов. swap(string &s) – вызывающая строка и строка s обмениваются содержимым. string& insert(size_type pos, const string &s) – в вызывающую строку, начиная с позиции pos, вставляется строка s. Если значение pos выводит за пределы вызывающей строки, то выбрасывается исключение out_of_range. Если длина строки после вставки превосходит максимальную допустимую длину строки, то выбрасывается исключение length_error. string& insert(size_type pos1, const string &s, size_type pos2, size_type n) – вставляет в вызывающую строку, начиная с позиции pos1, часть строки s, начиная с позиции pos2, и содержащую не более n символов. Если значения pos1 или pos2 выводят за пределы соответствующих строк, то выбрасывается исключение out_of_range. Если значение n выводит за пределы строки s, то вставляется часть строки s, начиная с позиции pos2 и до конца строки. Если длина строки-результата превосходит максимальную допустимую длину строки, то выбрасывается исключение length_error. string& insert(size_type pos, const chat *s, size_type n) – вставляет в вызывающую строку, начиная с позиции pos, n первых символов С-строки s. Могут выбрасываться исключения, которые рассматривались при описании других вариантов метода insert(). string& erase(size_type pos=0, size_type n=npos) – удаляет из вызывающей строки n символов, начиная с позиции pos. Если n не указано, то удаляется остаток строки, начиная с позиции pos. string& replace(size_type pos, size_type n, const string &s) – заменяет часть вызывающей строки, начиная с позиции pos, длиной n символов, строкой s. Если значение pos выводит за пределы вызывающей строки, то выбрасывается исключение out_of_range. Если длина строки-результата превосходит максимальный допустимый размер строки, то выбрасывается исключение length_error. string& replace(size_type pos1, size_type n1, const string &s, size_type pos2, size_type n2) – заменяет часть вызывающей строки, начиная с позиции pos1 длиной n1 символов, подстрокой строки s, начинающейся с позиции pos2 и длиной n2 символов. Может выбрасывать исключения того же типа, что и предыдущий вариант метода. string& replace(size_type pos, size_type n1, const char *s, size_type n2) – заменяет часть вызывающей строки, начиная с позиции pos длиной n1 символов, первыми n2 символами С-строки s. Может выбрасывать те же исключения. clear() – выполняет очистку строки, т. е. строка имеет нулевую длину. size_type find(const string &s, size_type pos=0) const – находит самое левое вхождение строки s в вызывающую строку, начиная с позиции pos вызывающей строки. Метод возвращает позицию начала строки s в вызывающей строке или npos, если вхождение не найдено. size_type find(char c, size_type pos=0) const – находит самое левое вхождение символа c в вызывающую строку, начиная с позиции pos. size_type find(const char *s, size_type pos=0) const – находит самое левое вхождение С-строки s в вызывающую строку, начиная с позиции pos вызывающей строки. size_type find(const char * s, size_type pos, size_type n) const – находит самое левое вхождение подстроки длиной n символов С-строки s в вызывающую строку, начиная с позиции pos вызывающей строки. size_type rfind(const string &s, size_type pos=0) const – находит самое правое вхождение строки s в вызывающую строку. Вызывающая строка сканируется справа налево, начиная с конца и заканчивая позицией pos. size_type rfind(char c, size_type pos=0) const – находит самое правое вхождение символа с в подстроку вызывающей строки, начинающуюся с позиции pos. size_type rfind(const char *s, size_type pos=0) const – находит самое правое вхождение С-строки s в подстроку вызывающей строки, начинающуюся с позиции pos. size_type rfind(const char *s, size_type pos, size_type n) const – находит самое правое вхождение подстроки длиной n символов С-строки s в подстроку вызывающей строки, начинающуюся с позиции pos вызывающей строки. string substr(size_type pos=0, size_type n=npos) const – возвращает подстроку вызывающей строки, начинающуюся с позиции pos и содержащую не более n символов. Метод может выбрасывать исключения рассмотренных выше типов. const char* c_str()const – возвращает указатель на константную С-строку, эквивалентную вызывающей строке. Указатель, который ссылается на полученную константную строку, может стать некорректным после выполнения любой неконстантной операции с исходной строкой. size_type copy(char *s, size_type n, size_type pos=0) const – копирует не более n символов в символьный массив s, начиная с позиции pos вызывающей строки. Нуль-символ в массив s не заносится. Метод возвращает количество скопированных символов. Могут выбрасываться исключения перечисленных выше типов. const char* data() const – аналогичен методу c_str(), но нуль-символ в конец возвращаемого символьного массива не помещается. Кроме рассмотренных выше методов класс string включает также методы для поиска самого левого вхождения любого символа заданной строки в другую строку, методы для поиска самого правого вхождения любого символа заданной строки в другую строку, методы для поиска самого левого символа заданной строки, который не входит в другую строку, методы для поиска самого правого символа заданной строки, который не входит в другую строку. Функциональное назначение данных методов понятно из их названий, а работают они аналогично уже рассмотренным методам поиска. В связи с этим их подробное описание здесь не приводится.
Дата добавления: 2014-12-27; Просмотров: 582; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |