C++ Строковые функции: strcpy(), strcat(), strlen(), strcmp()

⚡ Умное резюме

C++ Строковые функции, такие как strcpy, strcat, strlen и strcmp, позволяют программам копировать, объединять, измерять и сравнивать текст. В этом ресурсе объясняется, что такое строка, как объявлять строки в стиле C и строки std::string, получать доступ к их значениям и применять основные строковые функции с примерами.

  • 🔤 Основное определение: Строка — это последовательность символов; C++ string — это объект класса std::string.
  • 🧱 Два заявления: C++ Поддерживаются символьные массивы в стиле C, завершающиеся символом '\0', а также более безопасный тип класса std::string.
  • 📥 Доступ к значениям: Строки считываются и выводятся по имени, что продемонстрировано как на примере символьных массивов, так и на примере std::string.
  • 🇧🇷 Строковые функции: Функция strcpy копирует строки, strcat объединяет строки, strlen измеряет длину, а strcmp сравнивает две строки.
  • 📦 Обязателен заголовок: Функции работы со строками на языке C находятся в заголовочном файле cstring, который необходимо подключить перед использованием.

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

Что такое строка?

Строка представляет собой последовательность символов. А 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;
}

Выход:

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

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

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

Code Объяснение:

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

Выход:

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

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

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

Code Объяснение:

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

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

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

strcpy ()

Это функция копирования строк. Он копирует одну строку в другую строку.

Синтаксис:

strcpy(string1, string2);

Два параметра функции, string1 и string2, являются строками. Функция скопирует строку string2 в строку string1.

strcat ()

Это функция объединения строк. Он объединяет строки.

Синтаксис:

strcat(string1, string2);

Два параметра функции, string1 и string2, — это строки, которые нужно объединить. Приведенная выше функция объединит строку string2 с концом строки string1.

strlen ()

Это функция длины строки. Он возвращает длину строки, переданной ему в качестве аргумента.

Синтаксис:

strlen(string1);

Параметр string1 — это имя строки, длину которой необходимо определить. Вышеуказанная функция вернет длину строки string1.

strcmp ()

Это функция сравнения строк. Он используется для сравнения строк.

Синтаксис:

strcmp(string1, string2);

Приведенная выше функция вернет 0, если строки string1 и string2 одинаковы, меньше 0, если string1 < string2, и больше 0, если string1 > string2.

Пример:

В следующем примере показано, как использовать приведенные выше строковые функции:

#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++

Code Объяснение:

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

Часто задаваемые вопросы (FAQ)

Да. Искусственный интеллект может преобразовывать символьные массивы в std::string, обновлять связанные функции и объяснять преимущества с точки зрения безопасности. Разработчикам все равно следует проверять изменения на предмет граничных случаев, размеров буферов и предполагаемого поведения.

Да. Инструменты искусственного интеллекта генерируют примеры работы, объясняют поведение функций strcpy и strcat и указывают на риски переполнения буфера. Это ускоряет понимание, но запуск кода самостоятельно остается лучшим способом подтвердить правильность поведения.

std::string динамически управляет памятью и предоставляет встроенные операции, такие как конкатенация и сравнение. Строки в стиле C представляют собой фиксированные массивы символов, завершающиеся символом '\0', которые требуют ручной обработки памяти и более подвержены ошибкам.

Они могут вызвать переполнение буфера, если целевой массив слишком мал. Более безопасными альтернативами являются strncpy, strncat или просто использование операций std::string, которые автоматически управляют памятью и снижают эти риски.

Подведем итог этой публикации следующим образом: