Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 556; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.