Строковые функции в C++

Строковые функцииЯзык программирования C++ имеет класс строк, который используется для последовательности символов, также известной как строки. Это класс std::string.

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

Строковые функции

Строка C++ представляет собой последовательность символов. Когда мы определяем строки в C++, мы используем ключевое слово string, которое представляет собой не что иное, как класс std::string. Этот строковый класс поддерживает различные функции чтения строки, манипулирования, доступа к строке и т. д., которые выполняют различные операции над строковыми объектами. Ниже перечислены некоторые часто используемые функции:

Строковые функции Описание
1 Getline Получить строку из потока в строку
2 Substr Получить подстроку заданной строки
4 Length, strlen Получить длину строки
5 Find Найти содержимое в строке
6 Strtok, substr with delimiter Разделить строку на токены

getline

Прототип функции: istream& getline(istream& is, string& str)

Параметр(ы): is => объект istream, из которого извлекаются символы.

str=> Строковый объект, который используется для хранения извлеченного символа.

Возвращаемое значение такое же, как у istream. Внутри выполнение getline устанавливает определенные внутренние флаги следующим образом.

Флаг Описание ошибки
eofbit Достигнут конец исходного кода
failbit Ввод нельзя интерпретировать как допустимое текстовое представление объекта этого типа.
badbit Любая другая ошибка, кроме двух вышеуказанных

Описание: getline — стандартная библиотечная функция. Эта функция используется для чтения строки из стандартного потока ввода, такого как istream. Строки считываются до тех пор, пока не встретится «\n», который считается символом-разделителем.

В качестве другой версии getline можно указать третий параметр «char delim». Это символ-разделитель, указанный явно. В этой функции строка текста будет считываться до тех пор, пока не встретится указанный символ-разделитель.

Ниже приведен простой пример, демонстрирующий использование getline:

Вывод данных:

Читать также:  Хеш-таблица в C++

Enter the input string:
C++ tutorials
You entered: C++ tutorials

В приведенном выше примере мы читаем входную строку с помощью функции getline. Обратите внимание, что введенные строки или текст считываются в строковый объект mystr до тех пор, пока не встретится ‘\n’.

Substr

Прототип функции: string substr(size_t startpos, size_t endpos)

Параметр(ы): startpos=> Начальная позиция, из которой должна быть извлечена подстрока.

endpos=> Конечная позиция подстроки.

Возвращаемое значение: возвращает строку, являющуюся подстрокой родительской строки.

Описание: Эта функция возвращает подстроку заданной строки. Функция принимает в качестве параметров начальную и конечную позиции, а затем возвращает последовательность символов между этими позициями.

Пример:

Вывод данных:

Input string : MonitorBank
Substring(0,8) : Monitor

Length

Длина строки (length) — это количество символов, присутствующих в строке. Объектное представление строк std::string в C++ использует функции length() для возврата длины строки.

Кроме того, также есть метод size, который возвращает размер строки. Мы использовали метод size в приведенном ниже примере для функции length(). Еще одна функция, возвращающая длину строки, — «strlen». Эта функция возвращает длину строки, обозначенной массивом символов.

Мы рассмотрим обе функции одну за другой на примерах.

length() :

Прототип функции: size_t length ()

Параметр(ы): вызывается строкой, длина которую необходимо узнать.

Возвращаемое значение: возвращает параметр типа size_t, который представляет собой длину строки.

Описание: Эта функция находит длину строкового объекта, которым она вызывается.

Пример:

Вывод данных:

Input string : MonitorBank
The length of the string (with length method )is: 11
The size of the string (with size method )is: 11

В приведенной выше программе мы используем функции длины и размера std::string, которые возвращают длину и размер строкового объекта соответственно. Поскольку длина и размер возвращают количество символов в строке, мы получаем тот же результат.

strlen()

Прототип функции: size_t strlen (const char* str);

Читать также:  Двусвязный список структуры данных в C++

Параметр(ы): str=> Указатель на заканчивающуюся нулем строку, длину которой необходимо узнать.

Возвращаемое значение: возвращает значение size_t, обозначающее длину строки str.

Описание: функция strlen() возвращает длину строки, заканчивающейся нулем. Строка, принимаемая функцией strlen в качестве параметра, представляет собой массив символов, заканчивающийся нулем.

Пример:

Вывод данных:

Length of mystr1 = 23
Length of mystr2 = 25
mystr2 is longer than mystr1

В приведенной выше программе мы определили две разные строки и находим их индивидуальную длину с помощью функции strlen. Затем мы сравниваем длину двух строк и определяем, являются ли строки равными или неравными.

Find

Прототип функции: size_t find(string mysub)

Параметр(ы): mysub=> Строковый объект, который нужно найти внутри родительской строки.

Возвращаемое значение: size_t=> Первая позиция подстроки в родительской строке

Описание: Функция поиска строки используется для поиска позиции подстроки в родительской строке. Эта функция вызывается родительской строкой, и в качестве параметра передается подстрока, позиция которой должна быть найдена. Если подстрока отсутствует, возвращается пустая позиция.

Пример:

Вывод данных:

First occurrence of string Bank:7
First occurrence of string Ru:9

Эта программа определяет строку как «MonitorBankRu». Используя функцию поиска, мы находим первое вхождение строки «Bank» в родительской строке. Далее находим вхождение строки «Ru». Результатом является позиция вхождения искомой строки.

Split String

Разделение строки с помощью разделителя или токена является полезной операцией. В C++, поскольку есть более одного представления строк, мы можем использовать разные подходы к разбиению строки. Здесь мы обсудим два подхода к разделению строки.

Разделение объекта std::string

Самый простой способ разделить строковый объект — использовать функцию substr для объекта и указать разделитель в качестве конечной позиции, чтобы мы получили подстроку. Таким образом, мы можем разделить строку по разделителю, пока не пройдем всю строку.

Читать также:  Строки, пары и кортежи в STL

Давайте посмотрим на пример ниже, который сначала находит положение разделителя с помощью функции «find», затем находит подстроку и, наконец, выводит каждый из токенов:

Вывод данных:

This
is
monitor
bank

Как показано в приведенной выше программе, мы указываем разделитель, который будет использоваться для разделения данной строки. В цикле мы неоднократно находим вхождение разделителя с помощью функции поиска, передаем его функции подстроки и извлекаем подстроку. Затем каждый из этих полученных токенов отображается как результат.

Разделение массива символов с помощью функции strtok

Другой способ токенизации строки (разделение строки с помощью разделителя) — использование функции «strtok». Ниже мы обсудим особенности функции strtok.

Прототип функции: char* strtok(char str [], const char *delim)

Параметр(ы): str[] => Разделяемая строка.

Разделитель => Разделитель, по которому должна быть разделена строка.

Возвращаемое значение: возвращает следующий токен после разделения родительской строки.

Описание: Функция strtok разбивает заданную строку на токены по заданным разделителям. Эту функцию нужно вызывать в цикле, чтобы мы получили все токены для данной строки. Когда токенов больше не осталось, функция возвращает null.

Пример:

Вывод данных:

This
is
monitor
bank

Обратите внимание, что в этой программе мы используем функцию strtok, которая принимает строку и разделитель в качестве аргументов. Затем он разбивает строку на токен на основе указанного разделителя и отображает отдельные токены.

Итог

В этой статье мы рассмотрели некоторые общие важные функции, используемые для строк C++.

Мы обсудили функции для чтения входной строки, поиска строки, подстроки родительской строки, длины строки, разделения строки и т. д., а также их варианты. Эти функции помогают эффективно читать строки и управлять ими.

В нашей следующей статье мы подробно рассмотрим функции преобразования строк C++, которые можно использовать для преобразования строки в int и double, а также int в строку и т. д.

С Уважением, МониторБанк

Добавить комментарий