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

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

Массив символов в основном представляет собой строку в стиле C, которую поддерживает C++. Помимо символьных массивов в стиле C, C++ также поддерживает строковый класс «std::string». Далее мы обсудим какие бывают типы строк, и разницу между этими типами, а также представим программирование каждого типа на C++.

Массивы символов (строки в стиле C)

Строка в стиле C представляет собой массив символов, оканчивающийся нулевым символом «\0». Следовательно, мы можем определить массив типа char и размеры или размер массивов, а затем мы можем инициализировать его строкой или массивом символов.

Обратите внимание, что именно компилятор завершает строку нулевым символом, поэтому, если мы инициализируем массив символов строкой (в двойных кавычках «»), нам нужно оставить дополнительный пробел для нулевого символа при объявлении размера массива.

Давайте рассмотрим несколько примеров объявления и инициализации массивов символов:

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

Давайте рассмотрим пример чтения и записи массива символов в C++.

Ниже приведена простая программа, которая читает строку с помощью cin и выводит ее с помощью cout:

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

monitorbank.ru, который вы ввели: monitorbank.ru

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

Вы ввели строку в стиле C
: This

Если мы сравним оба вывода, то увидим, что когда мы ввели первую строку «monitorbank.ru», она была напечатана как есть.

Но во втором выводе, хотя мы ввели строку как «This is Cstyle string» («Это строка в стиле C»), вывод был только «This» («Это»).

Разница в выводе заключается в том, что оператор cin ‘>>’, который используется для чтения строки, обрабатывается как функция ‘scanf’ языка C, которая читает только до тех пор, пока не встретится пробел. Следовательно, ‘cin with >>’ подходит для чтения массивов символов без пробела.

Чтобы прочитать всю строку символов, включая пробелы, C++ использует функцию «get».

Пример программы, использующей функцию get, показан ниже:

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

monitorbank.ru, который вы ввели: monitorbank.ru

Как показано в примере, функция get cin использует два аргумента. Первый аргумент — это переменная массива символов, в которой должна быть прочитана строка, а второй аргумент — это максимальный размер массива.

Строки в стиле C также поддерживают многочисленные строковые функции, которые позволяют пользователям манипулировать строками. Эти функции определены в заголовке «cstring».

Ниже мы представляем таблицу, в которой перечислены различные строковые функции, которые можно использовать для управления строками в стиле C:

НомерФункцияАргументыОписание
1strcpys1, s2Копирует строку s2 в строку s1
2strcats1,s2Добавляет или объединяет строку s2 в конец строки s1
3strlens1Возвращает длину строки s1
4strcmps1,s2Возвращает 0: s1 и s2 совпадают
<0:s1 <s2
>0:s1>s2</s2
5strchrs1,chВозвращает указатель на первое вхождение символа ch в строку s1 и строку оттуда.
6strstrs1,s2Возвращает первое вхождение строки s2 в строку s1.

Следующая программа показывает использование некоторых из этих функций в C++:

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

Получается, что:

Длина firstStr: 14
Результирующая строка (secStr):monitorbank
Сравнение firstStr и secStr :-14
Конкатенация secStr: monitorbank for you
Первое вхождение i в firststr at: s — monitorbank.ru

Строковый класс в С++

Строка в C++, определяемая классом «std::string», является представлением потока символов в объект. Другими словами, класс String представляет собой набор строковых объектов. Этот строковый класс является частью пространства имен std и определен в заголовке «string.h».

Давайте обсудим некоторые основные различия между строковым классом и символьным массивом.

В то время как массивы символов, которые мы обсуждали выше, распределяются статически во время компиляции, строки являются объектами и, следовательно, могут выделяться динамически.
Поскольку массивы символов являются статическими по своей природе, их нельзя уменьшить или расширить после определения. Следовательно, если у нас есть массив символов размером 100, и мы инициализировали его словом «Hello», то оставшееся пространство тратится впустую.
Char mystr[100] = «Hello»;

Здесь оставшиеся 95 локаций потрачены впустую.

В отличие от этого, строковые объекты являются динамическими по своей природе и занимают ровно столько места, сколько занимает значение.

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

Класс String имеет множество функций, включая функции итератора.

Вот некоторые из основных различий между массивом символов и классом строковых объектов.

Далее вы увидите несколько примеров строкового класса вместе с некоторыми основными операциями, которые выполняются над объектами строкового класса.

Пример объявления и инициализации строкового класса:

В приведенном выше примере мы объявили и инициализировали строковый объект с помощью класса «string». Это простой пример. Теперь давайте создадим программу для чтения строки от пользователя, а также продемонстрируем несколько строковых функций, включая определение длины и сравнение двух строк.

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

На приведенном выше примере мы использовали многочисленные строковые функции для управления строками. После объявления строки мы используем функцию «getline» класса строки для чтения строки из стандартного ввода.

Как только мы прочитаем строку, мы найдем ее длину с помощью функции «length». Если нам нужно сравнить две строки, чтобы оценить, равны они или нет, мы можем использовать функцию «сравнить» класса строк. Если функция возвращает 0, то две строки равны, в противном случае функция возвращает ненулевое значение.

Еще одна функция заключается в добавлении другой строки в конец существующей строки. Это функция «append». В этом примере мы добавляем «.ru» к уже существующей строке str1 со значением «monitorbank».

Последняя функция в примере — это функция очистки, которая используется для очистки содержимого вызываемого строкового объекта. В этом примере мы очищаем содержимое объекта str, чтобы его длина стала равной 0.

Вывод

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

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

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