|
Программирование >> Инициализация объектов класса, структура
string sentence( An ADT provides both interface and implementation. ); string::size type position = sentence.find 1ast of( A ); string::size type length = 3; заменяем ADT на Abstract Data Type варианта: sentence.repiace( position, length, AAbstract Data Type ); position представляет собой начальную позицию, а length - длину заменяемой подстроки. Третий аргумент является подставляемой строкой. Его можно задать string new str( Abstract Data Type ); несколькими способами. Допустим, как объект string: sentence.replace( position, length, new str ); Следующий пример иллюстрирует выделение подстроки в new str: возвращает одно из трех значений: если s1 больше, чем s2, то положительное; если s1 меньше, чем s2, то отрицательное; если s1 равно s2, то 0. Например, cobol program crash.compare( cplus program crash ); вернет отрицательное значение, а cplus program crash.compare( cobol program crash ); положительное. Перегруженные операции сравнения (<, >, !=, ==, <=, >=) являются более компактной записью функции compare() . Шесть вариантов функции-члена compare() позволяют выделить сравниваемые подстроки в одном или обоих операндах. (Примеры вызовов приводились в предыдущем разделе.) Функция-член replace() дает десять способов заменить одну подстроку на другую (их длины не обязаны совпадать). В двух основных формах replace() первые два аргумента задают заменяемую подстроку: в первом варианте в виде начальной позиции и длины, во втором - в виде пары итераторов на ее начало и конец. Вот пример первого #include <string> typedef string::size type size type; найдем позицию трех букв size type posA = new str.find( A ) size type posD = new str.find( D ) size type posT = new str.find( T ) нашли: заменим T на Type sentence.replace( position+2, 1, new str, posT, 4 ); нашли: заменим D на Data sentence.replace( position+1, 1, new str, posD, 5 ); нашли: заменим A на Abstract sentence.replace( position, 1, new str, posA, 9 ); Еще один вариант позволяет заменить подстроку на один символ, повторенный заданное string hm( Some celebrate Java as the successor to C++. ); string:: size type position = hm.find( J ); заменим Java на xxxx количество раз: hmm.repiace( position, 4, x, 4 ); В данном примере используется указатель на символьный массив и длина вставляемой const char *lang = Eiffelda95Javaodula3 ; int index[] = { 0, 6, 11, 15, 22 }; string ahhem( C++ is the language for todays power programmers. ); подстроки: ahhem.replace(0, 3, lang+index[1], index[2]-index[1]); string sentence( An ADT provides both interface and implementation. ); указывает на A в ADT string: iterator start = sentence. begin()+3; заменяем ADT на Abstract Data Type А здесь м1 используем пару итераторов: sentence.repiace( start, start+3, Abstract Data Type ); Оставшиеся четыре варианта допускают задание заменяющей строки как объекта тина string, символа, повторяющегося N раз, нары итераторов и С-строки. Вот и все, что мы хотели сказать об операциях со строками. Для более полной информации обращайтесь к определению стандарта С++ [JS. string generate salutation( string generic1, string lastname, string generic2, string::size type pos, Напишите функцию: int length ); которая в строке string generic1( Dear Ils Daisy: ); заменяет Daisy и Is (миссис). Вместо Daisy подставляется параметр lastname, а вместо Is подстрока string generic2( MrsMsssPeople ); длины length, начинающаяся с pos. string lastName( AnnaP ); string greetings = Например, вызов generate salutation( generici, lastName, generic2, 5, 4 ); вернет строку: Dear Miss AnnaP: Упражнение 6.18 Напишите программу, которая с помощью функций-членов assign() и append() из string ote1( When lilacs last in the dooryard bloomd ); строк string ote2( The child is father of the man ); составит предложение The child is in the dooryard Упражнение 6.19
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |