Учебники

7) Строки C ++

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

Строка — это последовательность символов. Строка C ++ является объектом класса std :: string. Символы представляют собой хранимые последовательности байтов с доступом к одному символьному байту.

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

В этом уроке C ++ вы узнаете:

Объявление строк

C ++ поддерживает два типа строковых объявлений:

  • Строка символов в стиле C
  • Тип класса String

Строка символов в стиле C

Этот тип объявления строки был введен в языке программирования Си. C ++ продолжает поддерживать это. Это просто одномерный массив символов, оканчивающийся нулевым символом (\ 0). Строка с нулевым символом в конце содержит символы, которые составляют строку, за которой следует нулевое значение.

Рассмотрим объявление строки, данное ниже:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

Приведенное выше объявление создает строку, которая формирует слово John. Слово имеет 4 символа, но строка имеет размер 5. Дополнительный пробел позволяет удерживать нулевой символ.

Используя правило инициализации массива, мы можем написать приведенное выше утверждение следующим образом:

char name[] = "John";

Обратите внимание, что вам не нужно помещать нулевой символ в конец строковой константы. Компилятор C ++ автоматически помещает ‘\ 0’ в конец строки при инициализации массива.

станд :: строка

Стандартная библиотека C ++ предоставляет строковый класс, который поддерживает различные строковые операции. Он написан как std :: string.

Чтобы использовать этот класс, мы должны сначала включить его в наше рабочее пространство, используя препроцессор #include, как показано ниже:

#include<string>

Далее мы можем объявить нашу строку, используя ключевое слово string. Например:

string name = "John";

Приведенный выше оператор создаст строку с именем name для хранения значения John.

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

В 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. Объявление строки символов и присвоение ей имени. Строка будет хранить значение John. Дополнительное пространство будет хранить нулевой символ.
  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. Объявление строки и присвоение ей имени. Строка будет хранить значение Guru99.
  6. Печать значения имени строки вместе с текстом на консоли.
  7. Функция main () должна возвращать значение, если программа работает нормально.
  8. Конец тела функции main ().

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

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

зЬгср ()

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

Синтаксис:

strcpy(string1, string2);

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

strcat ()

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

Синтаксис:

strcat(string1, string2);

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

StrLen ()

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

Синтаксис:

strnlen(string1)

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

зЬгстр ()

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

Синтаксис:

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

Вывод:

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

Объяснение кода:

  1. Включение заголовочного файла iostream в наш код. Это позволит нам читать и писать в консоль.
  2. Включение стандартного класса CString в наш код.
  3. Включая пространство имен std, чтобы использовать его классы и функции без его вызова.
  4. Вызов функции main (), внутри которой должна быть добавлена ​​логика программы. {Отмечает начало тела функции main ().
  5. Объявление строки из 10 символов и присвоение ей имени name1. Строка будет хранить значение Guru99.
  6. Объявление строки из 10 символов и присвоение ей имени name2. Строка будет хранить значение John.
  7. Объявление строки из 10 символов и присвоение ей имени name3.
  8. Объявление целочисленной переменной с именем len.
  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 () сравнивает две строки.