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;
}

Вывод:

Доступ к строковым значениям

Вот скриншот кода:

Доступ к строковым значениям

Пояснение к коду:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  3. Вызов функции main(), внутри которой должна быть добавлена ​​логика программы. { отмечает начало тела функции main().
  4. Объявление строки символов и присвоение ей имени name. В строке будет храниться значение Джон. В дополнительном пространстве будет храниться нулевой символ.
  5. Вывод текста на консоль.
  6. Вывод значения строки с именем name на консоль.
  7. Функция main() должна возвращать значение, если программа работает нормально.
  8. Конец тела функции main().

Вот еще один пример использования C++ стандартный строковый класс:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

Вывод:

Доступ к строковым значениям

Вот скриншот кода:

Доступ к строковым значениям

Пояснение к коду:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включение стандартного строкового класса в наш код.
  3. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  4. Вызов функции main(), внутри которой должна быть добавлена ​​логика программы. { отмечает начало тела функции main().
  5. Объявление строки и присвоение ей имени name. В строке будет храниться значение Guru99.
  6. Печать значения имени строки вместе с текстом на консоли.
  7. Функция main() должна возвращать значение, если программа работает нормально.
  8. Конец тела функции 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;
}

Вывод:

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

Вот скриншот кода:

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

Пояснение к коду:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включение стандартного класса CString в наш код.
  3. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  4. Вызов функции main(), внутри которой должна быть добавлена ​​логика программы. { отмечает начало тела функции main().
  5. Объявление строки из 10 символов и присвоение ей имени name1. В строке будет храниться значение Guru99.
  6. Объявление строки из 10 символов и присвоение ей имени name2. В строке будет храниться значение Джон.
  7. Объявление строки из 10 символов и присвоение ей имени name3.
  8. Объявление целочисленная переменная по имени Лен.
  9. Копирование строки name1 в строку name3.
  10. Печать значения строки name1 вместе с текстом на консоли. Он должен напечатать Guru99.
  11. Объединение строк name2 в конец строки name1. Значением name1 теперь является Guru99John.
  12. Печать значения строки name1 вместе с текстом на консоли. Он должен напечатать Guru99John
  13. Определение длины строки с именем name1 и присвоение значения длины переменной len.
  14. Печать значения переменной len вместе с другим текстом на консоли.
  15. Функция main() должна возвращать значение, если программа работает нормально.
  16. Конец тела функции main().

Итого

  • Строка — это последовательность символов.
  • Строки относятся к стандартному классу строк в C++.
  • Мы можем объявлять строки, используя символьную строку в стиле C или стандартный строковый класс.
  • Функция strcpy() копирует одну строку в другую.
  • Функция strcat() объединяет две строки.
  • Функция strlen() возвращает длину строки.
  • Функция strcmp() сравнивает две строки.