|
Программирование >> Инициализация объектов класса, структура
string new string ( AnnaBelle Lee ); string object += ; добавим пробел ем начальна и конечна позицию в new string ew string.find( B ); найдем pos = new string string::size type posEnd = new string.find( ); string object.insert( string object.size(), позиция вставки new string, pos, начало подстроки в new string posEnd конец подстроки new string Можно выделить для вставки подстроку из new string: string object получает значение lississippi Belle . Если мы хотим вставить все символы new string, начиная с pos, последний параметр нужно опустить. string sl( ssissippi ); Пусть есть две строки: string s2( Annabelle ); Как получить третью строку со значением liss Anna ? string s3; скопируем первые 4 символа s1 Можно использовать функции-члены assign() и append() : s3.assign ( s1, 4 ); добавим пробел s3 теперь содержит значение liss . добавим 4 перв символа s2 Теперь s3 содержит Miss . s3.append(s2,4); s3 получила значение Miss Anna . То же самое можно сделать короче: s3.assign(s1,4).append( ).append(s2,4); присвоим beauty значение belle Вместо этих параметров мы можем использовать пару итераторов: beauty.assign( s2, s2.begin()+4, s2.end() ); В следующем примере две строки содержат названия текущего проекта и проекта, находящегося в отложенном состоянии. Они должны периодически обмениваться string current project( C++ Primer, 3rd Edition ); значениями, поскольку работа идет то над одним, то над другим. Например: string pending project( Fantasia 2000, Firebird segment ); Функция-член swap() позволяет обменять значения двух строк с помощью вызова current project.swap( pending project ); Для строки string first novel( V ); операция взятия индекса char ch = first novel[ 1 ]; возвратит неопределенное значение: длина строки first novel равна 1, и единственное правильное значение индекса - 0. Такая операция взятия индекса не обеспечивает проверку правильности параметра, но мы всегда можем сделать это сами с помощью функции-члена size() : Другая форма функции-члена assign() имеет три параметра: второй обозначает позицию начала, а третий - длину. Позиции нумеруются с 0. Вот как, скажем, извлечь string beauty; присвоим beauty значение belle belle из Annabelle : beauty.assign( s2, 4, 5 ); elem count( const string &word, char elem ) { int occurs = 0; не надо больше проверять ix for ( int ix=0; ix < word.size(); ++-ix ) if ( word[ ix ] == elem ) ++occurs; return occurs; void mumble( const string &st, int index ) { возможна ошибка char ch = st[ index ]; ... Там, где это невозможно или нежелательно, например: следует воспользоваться функцией at() , которая делает то же, что и операция взятия индекса, но с проверкой. Если индекс выходит за границу, возбуждается исключение void mumble( const string &st, int index ) { try { char ch = st.at( index ); ... catch ( std::out of range ){... } ... out of range: string cobol program crash( abend ); Строки можно сравнивать лексикографически. Например: string cplus program crash( abort ); Строка cobol program crash лексикографически меньше, чем cplus program crash: сопоставление производится по первому отличающемуся символу, а буква e в латинском алфавите идет раньше, чем o. Операция сравнения выполняется функцией-членом comipare(). Вызов sl.compare( s2 );
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |