Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Их размер одинаков, и каждый символ в позиции i одной строки равен символу в позиции i в другой строке

Операторы складывают строки, присваивают строкам значение, вводят/выводят строки, сравнивают строки
append добавляет строку или символы к строке
assign присваивает строке значение строк символов или других строк C++
at возвращает символ, стоящий в некоторой позиции
begin возвращает итератор на начало строки
c_str возвращает строку в виде немодифицируемого массива символов (как в C)
capacity возвращает количество символов, которые могут поместиться в строку
clear удаляет все символы из строки
compare сравнивает две строки
copy копирует символы из строки в массив
data возвращает указатель на первый символ строки
empty возвращает true если в строке нет символов
end возвращает итератор, установленный после последнего символа строки
erase удаляет символы из строки
find ищет символы в строке
find_first_not_of находит первый символ, отличный от
find_first_of находит первый символ схожий с
find_last_not_of находит последний символ, отличный от
find_last_of находит последний символ, схожий с
getline читает из потока ввода в строку
insert вставляет символы в строку
length возвращает длину строки
max_size возвращает максимальное количество символов, которые могут содержаться в строке
npos специальное значение, означающее «не найдено» или «все оставшиеся символы»
push_back добавляет символ в конец строки
rbegin возвращает обратный итератор на конец строки
rend возвращает обратный итератор на начало строки
replace заменяет символы в строке
reserve устанавливает минимальную вместимость строки
resize меняет размер строки
rfind находит последнее вхождение подстроки
size возвращает количество символов в строке
substr возвращает определённую подстроку
swap меняет две строки содержимым

Решите задачу:

Задача 3. Написать программу сравнения двух строк. Разбор задачи. Чтобы понять, что означает одна строка "больше" или "меньше", чем другая строка, рассмотрим процесс расстановки имен по алфавиту. Вы, без сомнения, поставили бы "Jones" перед "Smith", потому что в алфавите J раньше S. Но как компьютер узнает о порядке следования букв? Помните? - все символы представляются внутри компьютера как численные коды; когда компьютер сравнивает две строки, он на самом деле сравнивает численные коды символов в строке. (Замечание: коды символов упорядочены по алфавиту только для латинских букв, к кириллице это, к сожалению, не относится)

 


#include <string>

string st("Цена бутылки воды\n");

Длину строки возвращает функция size() (длина не включает завершающий нулевой символ).

cout << "Длина "

<< st

<< ": " << st.size()

<< " символов, включая символ новой строки\n";

Вторая форма определения строки задает пустую строку:

string st2; // пустая строка

Как мы узнаем, пуста ли строка? Конечно, можно сравнить ее длину с 0:

if (! st.size())

// правильно: пустая

Однако есть и специальный метод empty(), возвращающий true для пустой строки и false для непустой:

if (st.empty())

// правильно: пустая

Третья форма конструктора инициализирует объект типа string другим объектом того же типа:

string st3(st);

Строка st3 инициализируется строкой st. Как мы можем убедиться, что эти строки совпадают? Воспользуемся оператором сравнения (==):

if (st == st3)

// инициализация сработала

Как скопировать одну строку в другую? С помощью обычной операции присваивания:

st2 = st3; // копируем st3 в st2

Для конкатенации строк используется операция сложения (+) или операция сложения с присваиванием (+=). Пусть даны две строки:

string s1("hello, ");

string s2("world\n");

Мы можем получить третью строку, состоящую из конкатенации первых двух, таким образом:

string s3 = s1 + s2;

Если же мы хотим добавить s2 в конец s1, мы должны написать:

s1 += s2;

К отдельным символам объекта типа string, как и встроенного типа, можно обращаться с помощью операции взятия индекса. Вот, например, фрагмент кода, заменяющего все точки символами подчеркивания:

string str("fa.disney.com");

int size = str.size();

for (int ix = 0; ix < size; ++ix)

if (str[ ix ] == '.')
str[ ix ] = '_';

Вот и все, что мы хотели сказать о классе string прямо сейчас. На самом деле, этот класс обладает еще многими интересными свойствами и возможностями. Скажем, предыдущий пример реализуется также вызовом одной-единственной функции replace():

replace(str.begin(), str.end(), '.', '_');

Эта функция пробегает диапазон от begin() до end(), которые возвращают указатели на начало и конец строки, и заменяет элементы, равные третьему своему параметру, на четвертый.

<== предыдущая лекция | следующая лекция ==>
Тип данных string стандартной библиотеки | Преобразование чисел в строку и обратно
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 367; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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