Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
STL5 / lab2-string / lab2-string.doc
Скачиваний:
9
Добавлен:
10.04.2015
Размер:
177.66 Кб
Скачать

Вставка и конкатенация

Вставка новых символов осуществляется с помощью следующих функций. Особенность stringявляется то, что она автоматически увеличивает свой размер при добавлении символов.

template <class Ch, class Tr = char_traits<Ch>, class A = allocator<Ch> >

class std::basic_string

{

public:

// добавить в конец строки другую строку

basic_string& operator+=(const basic_string& str);

// добавить в конец строки С-строку

basic_string& operator+=(const Ch* s);

// добавить в конец строки символ

basic_string& operator+=(Ch c);

// добавить в конец строки другую строку

basic_string& append(const basic_string& str);

// добавить в конец строки подстроку строки str, начинающуюся

// с позиции pos длинной n

basic_string& append(const basic_string& str,

size_type pos, size_type n);

// добавить в конец строки символы из массива s,

// длинна массива n

basic_string& append(const Ch* s, size_type n);

// добавить в конец строки С-строку

basic_string& append(const Ch* s);

// добавить в конец строки n символов c

basic_string& append(size_type n, Ch c);

// добавить в конец строки символы из последовательности начинающейся

// итератором first и заканчивая итератором last (невключительно)

template<class In>

basic_string& append(In first, In last);

// добавить в конец строки символ

void push_back(const Ch c);

// вставить, начиная с позиции pos1, строку str

basic_string& insert(size_type pos1, const basic_string& str);

// вставить, начиная с позиции pos1, подстроку строки str заданную

// pos2 и n

basic_string& insert(size_type pos1, const basic_string& str,

size_type pos2, size_type n);

// вставить, начиная с позиции pos, содержимое массива символов

// s длинной n

basic_string& insert(size_type pos, const Ch* s, size_type n);

// вставить, начиная с позиции pos С-строку s

basic_string& insert(size_type pos, const Ch* s);

// вставить, начиная с позиции pos n символов c

basic_string& insert(size_type pos, size_type n, Ch c);

// вставить перед символом, указываемым итератором p, символ с

// возвращается итератор указывающий на вставленный символ

iterator insert(iterator p, Ch c);

// вставить перед символом, указываемым итератором p, n символов с

void insert(iterator p, size_type n, Ch c);

template<class In>

// вставить перед символом, указываемым итератором p, символы

// из последовательности задаваемой парой итераторов от first

// до last невключительно

void insert(iterator p, In first, In last);

};

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

#include<string>

#include<iostream>

using namespace std;

int main(int argc, char** argv)

{

string MyString("Some useful information");

cout << MyString << endl;

cout << "Size of string: " << MyString.size() << endl;

MyString.append(" about STL");

cout << MyString << endl;

cout << "Size of string: " << MyString.size() << endl;

MyString.insert(4," really");

cout << MyString << endl;

cout << "Size of string: " << MyString.size() << endl;

string StringToAdd("! :)");

cout << MyString + StringToAdd << endl;

return 0;

}

Результат работы программы:

Some useful information

Size of string: 23

Some useful information about STL

Size of string: 33

Some really useful information about STL

Size of string: 40

Some really useful information about STL! :)

Для строк определены операторы сложения, которые выполняют конкатенацию строк и возвращают полученную строку. Поддерживаются следующие комбинации аргументов оператора сложения

string s1(“String1“);

string s2(“String2”);

const char* str = “C-string”;

// Сложение двух строк

string s3 = s1 + s2;

// Сложение С-строки и строки

string s4 = str + s2; // s4 == “C-stringString2”

string s5 = s2 + “!?!”; // s5 == “String2!?!”

// Сложение строки и символа

string s6 = ‘!’ + s1; // s6 == “!String1”

string s7 = s1 + ‘!’; // s6 == “String1!”

Соседние файлы в папке lab2-string