Программирование
Тема 7.1 Строки в С++
1
Строки string в С++
-
Пример 1: Способы создания строк, операции со строками, ввод – вывод строк


2
Строки string в C++
-
Кроме работы со строками, как с массивом символов, в C++ существует специальный класс string.
-
Для работы с ним необходимо в начале программы подключить заголовочный файл string и пространство имен std:
-
#include <string>
-
using namespace std;
-
Конструкторы класса string позволяют создавать пустую строку, инициализировать строку си-строкой или ранее созданным объектом типа string (пример 1).
-
Ввод и вывод строк типа string осуществляется с помощью потоковых операций >> и <<. Но операция ввода ( >> ) позволяет вводить строку только до первого пробела, поэтому для ввода строк типа string удобно использовать функцию getline() (пример 1).
-
Для строк типа string определены следующие операции:
-
присваивания ( = , +=);
-
сравнения ( == , != , < , >);
-
обращение по индексу ( [ ] ).
-
Операция простого присваивания ( = ) позволяет в одну строку записать содержимое другой строки.
-
Операция составного присваивания ( += ) позволяет в конец одной строки добавить содержимое другой строки.
-
Операции сравнения ( == , != , < , >) выполняют сравнение строк в лексикографическом порядке (по алфавиту). Результатом выполнения операций сравнения являются значение 0, если строки равны; значение < 0, если строка лексикографически меньше со сравниваемой строкой; значение >0, если строка лексикографически больше со сравниваемой строкой (пример 1).
-
Операция обращения по индексу ( [ ] ) выполняет доступ с символу строки как для его чтения так и для его изменения (пример 1).
3
Строки string в С++
-
Пример 2: Изменение строк


4
Строки string в С++


5
Строки string в С++


6
Строки string в С++
-
Пример 4: Сравнение строк методом compare()


7
Строки string в C++
-
Изменение строк типа string выполняется с помощью методов:
-
методы append - добавляют подстроку в конец строки;
-
методы erase - удаляют фрагмент из строки;
-
методы insert - вставляют подстроку в указанное место строки;
-
методы replace - заменяют одну подстроку на другую.
-
В примере 2 показано использование методов изменения строк типа string.
-
Пример 3 демонстрирует использование методов поиска в строке.
-
Методы find выполняют поиск в исходной строке указанного элемента (символа, си-строки, с++-строки). Методы возвращают позицию найденного элемента или npos.
-
string::npos - это специальное значение, равное максимальному значению, которое может предоставить тип size_type. Точный смысл данного значения зависит от контекста, но, как правило, оно используется либо как индикатор конца строки в функциях, которые ожидают позицию символа, либо как индикатор ошибки в функциях, которые возвращают позицию в строке.
-
Также есть аналогичные find методы rfind, делающие поиск справа налево.
-
Методы find _first_not_of и методы find _last_not_of выполняют поиск символа не входящего в указанную строку. Методы возвращают позицию найденного символа или npos.
-
Методы find _first_of и методы find _last_of выполняют поиск символа входящего в указанную строку. Методы возвращают позицию найденного символа или npos.
-
Для сравнения строк можно использовать мето д compare (пример 4). Метод compare так же как и операции сравнения сравнивает строки в лексикографическом порядке.
-
Результатом выполнения метода compare являются значение 0, если строки равны; значение < 0, если строка лексикографически меньше со сравниваемой строкой; значение >0, если строка лексикографически больше со сравниваемой строкой.
8
Строки string в С++
-
Пример 5: Использование методов length(), capacity() и empty()



9
Строки string в С++
-
Пример 6: Массив строк. Использование метода at()


10
Строки string в С++
-
Пример 7: Преобразование строки string в си-строку и обратно


11
-
Контрольные вопросы
-
Строки string в С++: понятие, способы создания, допустимые операции, основные методы класса string. Примеры.
-
Строки QString в Qt С++: понятие, способы создания, допустимые операции, основные методы класса QString. Примеры.
-
Дополнительную информацию строках string C++ см. в статье по ссылке
-
http://scrutator.me/post/2014/09/02/cpp_strings_basics.aspx
12