Класи STL: з самого початку

Перед тим, як почати писати програми з використанням STL, давайте дослідимо класи, наявні в цій бібліотеці, а також те, як ви можете їх використовувати в своїх додатках Ми будемо брати по одному класу і розглядати методи, доступні для цього класу, і застосування класу (так само як і незастосування)

Спочатку давайте подивимося на клас string (рядок), який надає методи для обробки символів Цей клас – розумний і гнучкий масив символів Замість того, щоб обмежувати вас фіксованою кількістю символів, цей клас надає можливість підтримки рядків будь-якої довжини (аж до максимально можливого блоку памяті, підтримуваного операційною системою, з якою ви працюєте) Клас string схожий на тип string з Visual Basic і надає схожу функціональність для маніпулювання символьними даними, що зберігаються в рядку

Таблиця 51 показує список основних (найбільш часто використовуваних) функцій класу string

разом з описом того, що робить функція Таблиця 51 Використовувані методи класу string operator[]

Надає доступ до конкретних символам в рядку для читання або запису

Конвертує рядок у char * (покажчик на символ) для використання у функціях, які не вміють працювати зі string

Додає символи до кінця рядка

Присвоєння рядку інших рядків, символьних масивів і навіть чисел

Дозволяє вставляти символи або інші рядки в змінну типу string

Дозволяє видаляти один або більше символів з цього рядка в даній позиції

Заміщення одного або більше символів в даній позиції

Повертає кількість символів у рядку

Вказує, чи є в рядку символи

Дозволяє знайти перше входження символу або підрядка в даний рядок

Як find, але пошук йде з кінця рядка назад

Дозволяє знайти перше входження символів з набору в рядку

Повертає підрядок Дуже схоже на функцію Visual Basic substr

Знаходить перший символ в рядку, що не входить в заданий набір

Дозволяє порівнювати рядки (також підтримуються оператори =, <,>)

Клас string – один з найпотрібніших більшості додатків Він прибирає весь цей плутаний код, який ми коли-небудь писали для доступу до рядків символів і управління ними, а також знімає проблему перевищення довжини рядка і можливого стирання вмісту памяті за її межами

Давайте подивимося на дуже простий приклад використання класу string:

#include &ltstring&gt

#include &ltstdioh&gt

#include &ltstdlibh&gt

#include &ltstring&gt using namespace std

int main(void)

{

/ / Присвоїти рядок символів обєкту типу string string s = Hello world;

/ / Отримати перше слово в рядку

int nWordEnd = sfind( )

string sub_string = ssubstr(0,nWordEnd)

/ / Вивести результати

printf (Вихідний рядок:% s \ n, sc_str) printf (Підрядок з першого слова:% s \ n,

sub_stringc_str())

return 0

}

Цей приклад кілька важливих випадків використання обєкта string По-перше, ви бачите, що ми можете прямо присвоювати рядок символів обєкту string Це спрощує використання рядків з даними в нашому додатку

Наступне – використання методу find в обєкті типу string Метод find (і його брат, метод rfind) знайде перше входження символу в рядку Повертає метод позицію (починаючи з 0) знайденого символу, або -1, Якщо підходящого символу в рядку не знайшлося

Метод substr повертає копію частини рядка, що починається з позиції, заданої першим параметром методу, і довжиною, заданою в другому параметрі методу Якщо опустити другий аргумент, то повернеться рядок символів починаючи з даної позиції до кінця початкового рядка, що еквівалентно функції мови BASIC Right $ ()

І, нарешті, для виведення рядка на екран ми використовуємо нашу стару знайому – функцію printf, виводячи рядок як символьний масив (специфікація% s в рядку формату printf) через використання методу c_str () для перетворення обєкта string в символьний масив Я вважаю за краще використовувати printf в додатках консольного типу (наприклад DOS-додатках) Якщо ви віддаєте перевагу використовувати більш сучасні потоки, таки як cout, то ви можете переписати попередні рядки так:

cout << "Вихідний рядок:" << s << endl; cout << "Підрядок з першого слова:"

&lt&lt sub_string &lt&lt endl

Зауважте, що в цьому випадку вам не потрібно використовувати метод c_str, так як у класу string є перевизначені методи для потокових операторів << і >>

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*