C++ String
C++ предоставляет следующие два типа представления строк:
- Строка в стиле C
- Тип класса string, введённый в C++
Строка в стиле C
Строки в стиле C появились в языке C и продолжают поддерживаться в C++. Строка фактически представляет собой одномерный массив символов,nullСимвол\0завершающийся нулевым символом. Поэтому строка, завершающаяся нулевым символом, содержит символы, из которых состоит строка.
Следующее объявление и инициализация создаютEXAMPLEстроку. Поскольку нулевой символ сохраняется в конце массива, размер массива символов больше, чем словоEXAMPLEВ нём на один символ больше.
char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
Согласно правилам инициализации массива, вышеприведённый оператор можно записать следующим образом:
char site[] = "EXAMPLE";
Ниже показано представление в памяти строк, определённых в C/C++:
На самом деле не нужно ставитьnullСимвол помещается в конец строковой константы. При инициализации массива компилятор C++ автоматически\0его в конце строки. Давайте попробуем вывести строку выше:
Пример
Когда приведённый выше код компилируется и выполняется, он выдаёт следующий результат:
Example: EXAMPLE
C++ имеет большое количество функций для работы со строками, завершающимися нулевым символом:
| Порядковый номер | Функции & назначение |
|---|---|
| 1 | strcpy(s1, s2); Копирует строку s2 в строку s1. |
| 2 | strcat(s1, s2); Присоединяет строку s2 к концу строки s1. Конкатенация строк также может быть+числом, например: string str1 = "example"; string str2 = "google"; string str = str1 + str2; |
| 3 | strlen(s1); Возвращает длину строки s1. |
| 4 | strcmp(s1, s2); Если s1 и s2 идентичны, возвращает 0; если s1<s2, возвращаемое значение меньше 0; если s1>s2, возвращаемое значение больше 0. |
| 5 | strchr(s1, ch); Возвращает указатель на первое вхождение символа ch в строке s1. |
| 6 | strstr(s1, s2); Возвращает указатель на первое вхождение строки s2 в строке s1. |
В следующем примере используются некоторые из упомянутых выше функций:
Пример
Когда приведённый выше код компилируется и выполняется, он выдаёт следующий результат:
strcpy( str3, str1) : example strcat( str1, str2): examplegoogle strlen(str1) : 12
Класс string в C++
Стандартная библиотека C++ предоставляетstringтип класса, который поддерживает все вышеперечисленные операции и добавляет множество других возможностей. Мы изучим этот класс в стандартной библиотеке C++, но сейчас давайте сначала посмотрим на следующий пример:
Сейчас вы, возможно, ещё не полностью понимаете этот пример, потому что до сих пор мы не обсуждали классы и объекты. Поэтому пока можете просто кратко посмотреть на этот пример и вернуться к его пониманию позже, после того как освоите концепции объектно-ориентированного программирования.
Пример
Когда приведённый выше код компилируется и выполняется, он выдаёт следующий результат:
str3 : example str1 + str2 : examplegoogle str3.size() : 12Другие расширения