КАТЕГОРИИ: Архитектура-(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 в том виде, в каком она находилась бы во встроенном строковом типе. 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; Просмотров: 462; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |