Вставка и конкатенация
Вставка новых символов осуществляется с помощью следующих функций. Особенность 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!”