C++ Строковая функция: strcpy(), strcat(), strlen(), strcmp() Пример
Что такое строка?
Строка представляет собой последовательность символов. А C++ string — это объект класса std::string. Символы представляют собой сохраненные последовательности байтов с разрешенным доступом к одному символьному байту.
C++ строки выделяют память динамически. При необходимости во время выполнения можно выделить больше памяти для строки. Поскольку нет предварительного выделения памяти, нет и потерь памяти. Мы можем выполнять различные операции со строками, включая сравнения, конкатенацию, преобразование и т. д.
Объявление строк
C++ поддерживает два типа объявлений строк:
- Строка символов в стиле C
- Тип строкового класса
Строка символов в стиле C
Этот тип объявления строки был введен в Язык программирования C. C++ продолжает поддерживать его. Это просто одномерный массив символов, заканчивающийся нулевым символом (\0). Строка с нулевым завершением содержит символы, составляющие строку, за которыми следует ноль.
Рассмотрим объявление строки, приведенное ниже:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Приведенное выше объявление создает строку, образующую слово John. В слове 4 символа, но размер строки равен 5. Дополнительное пространство позволяет хранить нулевой символ.
Используя правило инициализации массива, мы можем записать приведенный выше оператор следующим образом:
char name[] = "John";
Обратите внимание: вам не обязательно помещать нулевой символ в конце строковой константы. C++ компилятор автоматически поместит '\0' в конец строки при инициализации массива.
станд :: строка
Стандарт C++ Библиотека предоставляет класс string, который поддерживает различные строковые операции. Он записывается как std::string.
Чтобы использовать этот класс, мы должны сначала включить его в нашу рабочую область с помощью препроцессора #include, как показано ниже:
#include<string>
Далее мы можем объявить нашу строку, используя ключевое слово string. Например:
string name = "John";
Приведенный выше оператор создаст строку с именем name для хранения значения John.
Доступ к строковым значениям
In C++мы можем получить доступ к строковым значениям, используя имя строки. Например:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
- Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
- Вызов функции main(), внутри которой должна быть добавлена логика программы. { отмечает начало тела функции main().
- Объявление строки символов и присвоение ей имени name. В строке будет храниться значение Джон. В дополнительном пространстве будет храниться нулевой символ.
- Вывод текста на консоль.
- Вывод значения строки с именем name на консоль.
- Функция main() должна возвращать значение, если программа работает нормально.
- Конец тела функции main().
Вот еще один пример использования C++ стандартный строковый класс:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
- Включение стандартного строкового класса в наш код.
- Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
- Вызов функции main(), внутри которой должна быть добавлена логика программы. { отмечает начало тела функции main().
- Объявление строки и присвоение ей имени name. В строке будет храниться значение Guru99.
- Печать значения имени строки вместе с текстом на консоли.
- Функция main() должна возвращать значение, если программа работает нормально.
- Конец тела функции main().
Строковые функции в C++
Вам часто придется манипулировать строками. C++ предоставляет широкий набор функций, которые вы можете использовать для этого. Эти функции определены в классе CString, поэтому нам необходимо включить его в наш код, чтобы использовать функции. Давайте обсудим некоторые:
strcpy ()
Это функция копирования строк. Он копирует одну строку в другую строку.
Синтаксис:
strcpy(string1, string2);
Два параметра функции, string1 и string2, являются строками. Функция скопирует строку string2 в string1.
strcat ()
Это функция объединения строк. Он объединяет строки.
Синтаксис:
strcat(string1, string2);
Два параметра функции, string1 и string2, представляют собой строки, которые необходимо объединить. Вышеупомянутая функция объединит строку string2 в конец строки string1.
strlen ()
Это функция длины строки. Он возвращает длину строки, переданной ему в качестве аргумента.
Синтаксис:
strnlen(string1)
Параметр string1 — это имя строки, длину которой необходимо определить. Вышеуказанная функция вернет длину строки string1.
strcmp ()
Это функция сравнения строк. Он используется для сравнения строк.
Синтаксис:
strcmp(string1, string2);
Вышеуказанная функция вернет 0, если строки string1 и string2 похожи, и меньше 0, если string1. строка2.
Пример:
В следующем примере показано, как использовать приведенные выше строковые функции:
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
- Включение стандартного класса CString в наш код.
- Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
- Вызов функции main(), внутри которой должна быть добавлена логика программы. { отмечает начало тела функции main().
- Объявление строки из 10 символов и присвоение ей имени name1. В строке будет храниться значение Guru99.
- Объявление строки из 10 символов и присвоение ей имени name2. В строке будет храниться значение Джон.
- Объявление строки из 10 символов и присвоение ей имени name3.
- Объявление целочисленная переменная по имени Лен.
- Копирование строки name1 в строку name3.
- Печать значения строки name1 вместе с текстом на консоли. Он должен напечатать Guru99.
- Объединение строк name2 в конец строки name1. Значением name1 теперь является Guru99John.
- Печать значения строки name1 вместе с текстом на консоли. Он должен напечатать Guru99John
- Определение длины строки с именем name1 и присвоение значения длины переменной len.
- Печать значения переменной len вместе с другим текстом на консоли.
- Функция main() должна возвращать значение, если программа работает нормально.
- Конец тела функции main().
Итого
- Строка — это последовательность символов.
- Строки относятся к стандартному классу строк в C++.
- Мы можем объявлять строки, используя символьную строку в стиле C или стандартный строковый класс.
- Функция strcpy() копирует одну строку в другую.
- Функция strcat() объединяет две строки.
- Функция strlen() возвращает длину строки.
- Функция strcmp() сравнивает две строки.