Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие С++- не книжкой_новое.doc
Скачиваний:
5
Добавлен:
04.11.2018
Размер:
765.44 Кб
Скачать

Задание 2 . Класс string

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1-12 задания 3 из параграфа 1.6, использую класс string.

В С++ описан стандартный класс string, который обеспечивает различные операции для манипулирования строками. Данный класс описывается в заголовочном файле cstring.h.

В классе string имеется несколько конструкторов. Ниаболее употребляемыми из них явлются конструктор, создающий пустую строку - string () и конструктор, создающий строку со значением С-строки - string (const char*).

Например,

string S1, S2; // создали два объекта класса string – пустые строки

string S3 (“Hello!!!”);// создали объект класса string – строку со значение “Hello!!!”

Класс содежит три операции присваивания:

string& opertor=(const srting& str); // присваивание объекта-строка

string& opertor=(const char *str);// присваивание значения С-строки

string& opertor=(char s);// присваивание значения символа

Например,

string S4=S3, S5= “Error”, S6= ‘a’;

В классе string опрделена константа NPOS, задающая максимально возможное число, которое в зависимости от конекста означет либо «все элементы строки», либо отрицательный результат поиска.

В классе переопредлены следющие операции

Опреция

Значение

=

присваивание

+

конкантенация

== (!=)

равенство(неравенство)

< (<=)

меньше (меньше или равно)

> (>=)

больше (больше или равно)

[ ]

индексация

<< (>>)

вывод(ввод)

+=

добавление

Пример 1. Ввести с клавиатуры два слова. Если они одинаковы, то вывести на экран их первый символ, в противном случае вывести строку, состоящую из этих слов, разделенных пробелом.

# include <iostream.h>

# include <cstring.h>

Void main()

{

int k,k1;

string s1,s2;// описали два объекта класса string

cin>>s1>>s2; // считали две слова

if (s1!=s2) // использовали функцию != (не равно)

// класса string

{

string s3=s1+" "+s2+"\n"; //конкатенация строк класса //string для создания новой строки

cout<<s3;

}

else cout<<"First = "<<s1[0];

}

Опишем наиболее используемые методы класса string.

Метод size_type1 size() const и метод size_type length() const возвращают размер строки.

Метод insert (size_type posl, const string & str) вставляет строку str в вызывающую строку, начиная с позиции posl.

Метод replace (size_type posl, size_type n1, const string & str) заменяет n1 элементов, начиная с позиции pos1 вызывающей строки, элементами строки str.

Метод string substr (size_type pos=0, size_type n=NPOS) const возвращает подстроку длины n, назиная с позиции pos.

Метод size_type find (const string& str, size_type pos=0) const / size_type rfind (const string& str, size_type pos=0) const ищет самое левое/правое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.

Метод size_type find (char с, size_type pos=0) const / size_type find (char с, size_type pos=0) const ищет самое левое/ правое вхождение символа с в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.

Метод size_type find_first_of (const string& str, size_type pos=0) const/ size_type find_last_of (const string& str, size_type pos=0) const ищет самое левое/ правое вхождение любого символа строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию вхождения или NPOS, если вхождение не найдено.

Метод swap (const string& str) обменивает содрежимое вызывающей строки и строи str.

Метод erase (size_type pos=0, size_type n= NPOS) удаляет n элементов, начиная с позиции pos.

Метод clear () ощищает всю строку.

Метод size_type copy (char * s, size_type n, size_type pos=0) const копирует в символьный массив s n элементов вызывающей строки, начиная с позиции pos. Возращается количество скопированных элементов.

Пример 2. Решим задачу из примера 6.3., использую класс string. Вывести слова введенной строки, начинающиеся с гласной буквы, на экран столбиком, без разделительных знаков (пробел, табуляция, точка, запятая и т.п.).