Студопедия

КАТЕГОРИИ:


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

Присваивание, добавление и обмен строк




КОПИРОВАНИЕ СТРОК И ПОДСТРОКИ

 

Скопировать одну строку в другую можно с помощью

· обычной операции присваивания:

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

 

· функции-члена copy()

s.copy(st2, n, pos) - копирует из строки s в символьный массив st2n символов, начиная с pos. В символьный массив st2 завершающий символ нуль не дописывается. Можно использовать функцию без параметра pos (копируются первые n символов строки s).

 

string s("МАМА МЫЛА "); char st2[100];

s.copy(st2, 4, 5); // копируем в st2 четыре символа строки s, начиная с 6.

st2[4]='\0';

cout << st2<< " \n";

 

· функции-член substr();

str.substr(pos, n) возвращает строку, являющуюся подстрокой исходной строки, начиная с позиции pos и включая n символов, или до конца строки (если n не указано).

string s("МАМА МЫЛА "),st2;

st2=s.substr(2, 5); // копируем в st2 пять символов строки s, начиная с 3

cout << st2<< " \n";

 

 

Если функция вызывается без параметров st2=s.substr(), то в st2 скопируется вся строка s.

 

1. Для конкатенации строк используется операция сложения (+) или операция сложения с присваиванием (+=). Этот оператор создает копию левого операнда, а затем добавляет к ней содержимого правого операнда.

Пусть даны две строки:

string s1("hello, ");

string s2("world\n");

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

string s3 = s1 + s2;

cout << s3;

 

 

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

s1 += s2;

 

Операция сложения может конкатенировать объекты класса string не только между собой, но и со строками встроенного типа. Можно переписать пример, приведенный выше, так, чтобы специальные символы и знаки препинания представлялись встроенным типом, а значимые слова – объектами класса string:

const char *pc = ", ";

const char *pc1 = "!";

string s1("hello");

string s2("world");

string s3 = s1 + pc + s2 + pc1 + "\n";

cout << s3;

 

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

string s1;

const char *pc = "a character array\n";

s1 = pc; // правильно

cout << s1;

 

 

Обратное преобразование не работает. Попытка выполнить следующую инициализацию строки встроенного типа вызовет ошибку компиляции:

char *str = s1; // ошибка компиляции

Чтобы осуществить такое преобразование, необходимо явно вызвать функцию-член c_str():

const char *str = s1.c_str(); // правильно

 

Функция c_str() возвращает указатель на символьный массив, содержащий строку объекта string в том виде, в каком она находилась бы во встроенном строковом типе.
Т.о., чтобы занести информацию из объекта string во встроенную строку ( массив) необходимо явно вызвать функцию-член c_str():

char d[256];

strcpy(d, s1.c_str())

 

2. Функции-члены более общего назначения assign() и append()

s.append(str, pos,n) - добавляет к строке sn -символов строки str, начиная с позиции pos.

s.assign (str, pos,n) - присваивает строке s n -символов строки str, начиная с позиции pos.




Поделиться с друзьями:


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


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



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




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