
Сравнительная таблица
Основа для сравнения | Массив символов | строка |
---|---|---|
основной | Символьный массив представляет собой набор переменных, символьного типа данных. | Строка - это класс, а переменные строки - это объект класса «строка». |
Синтаксис | char array_name [size]; | строка string_name; |
индексирование | Отдельный символ в символьном массиве может быть доступен по его индексу в массиве. | В строке к определенному символу может обращаться функция «string_name.charAt (index)». |
Тип данных | Массив символов не определяет тип данных. | Строка определяет тип данных в C ++. |
операторы | Операторы в C ++ не могут быть применены к массиву символов. | Вы можете применить стандартный оператор C ++ к строке. |
граничный | Границы массива легко перекрываются. | Границы не пройдут. |
Доступ | Быстрый доступ. | Медленный доступ. |
Определение массива символов
Символьный массив представляет собой набор переменных типа «char»; это может быть одномерный массив или двумерный массив. Это также называется «строка с нулевым символом в конце». Символьный массив - это последовательность символов, которые хранятся в последовательных адресах памяти. В массиве символов к определенному символу можно получить доступ по его индексу. «Нулевой символ» завершает массив символов ».

Давайте рассмотрим пример массива символов:
char name [] = {'A', 'j', 'a', 'y', '\ 0'}; или char name [] = "Ajay";
Здесь «char» - это символьный тип данных, «name» - это имя переменной массива символов. Я показал два способа инициализации массива символов. В первом методе явно упоминается ноль, а во втором методе компилятор автоматически вставляет ноль.
Конец строки всегда является нулевым символом; это завершающий символ массива символов. Массив символов не является встроенным типом данных; мы создаем массив символов, объявив его. Вы не можете применять стандартные операторы к массиву символов. Для работы с массивом символов есть несколько встроенных функций, таких как (strlen (), strlwr (), strupr (), strcat ()). Поскольку стандартные операторы не могут быть применены к массиву символов, они не могут принимать участие ни в одном выражении.
Символьный указатель на символьный массив также может быть создан.
Давайте разберемся с этим на примере.
char s1 [] = "Привет"; char s2 [] = "Сэр"; s1 = s1 + s2; // операторы ошибок не могут быть применены s2 = s1; // ошибка указателя символа char * s = "Morning"; char * p; P = S; // исполняет
В приведенном выше примере мы объявили двухсимвольный массив s1, s2 и двухсимвольные указатели s и p. Символьные массивы s1 и s2 инициализируются, мы видим, что ни оператор сложения (+), ни оператор присваивания не работают с массивом символов. Но символьный указатель может быть назначен другому символьному указателю.
Помните, что после инициализации массива символов его нельзя снова инициализировать другим набором символов. Доступ к массиву символов или строке с нулевым символом в конце быстрый по сравнению со строкой в C ++.
Определение строки
Строка не является встроенным типом данных C ++. Это объект класса типа «строка». Как и в C ++, создание класса похоже на создание «типа». Класс «string» является частью библиотеки C ++. Он содержит набор символов или массив символов в целом. Существует три причины, по которым стоит разработка стандартного класса строк.
- Во-первых, это «согласованность», массивы символов сами по себе не являются типами данных.
- Второе - это «удобство», вы не можете использовать стандартные операторы в массиве символов.
- В-третьих, «безопасность», границы массивов легко выходят за рамки.

Давайте разберемся со строками на примере.
строка s1; s1 = "Привет"; строка s2 («Доброе утро»); строка s3 = "Hennery"; строка s4;
В приведенном выше объявлении объявлены четыре строковые переменные или объекты (s1, s2, s3, s4). В приведенном выше объявлении я показал три способа инициализации строки. Строка s1 объявляется и затем отдельно инициализируется. Строка s2 инициализируется конструктором класса «String». Строка s3 инициализируется во время ее объявления как обычный тип данных. Мы можем применить стандартный оператор к строковым переменным.
s4 = s1; // присвоение одного строкового объекта другому s4 = s1 + s2; // добавляем две строки и сохраняем результат в третьей строке if (s3> s2) // сравниваем две строки strings s5 (s1); создание нового строкового объекта с использованием существующего строкового объекта
В приведенном выше коде различные операторы применяются к строке и выполняются различные операции. Первый оператор копирует один строковый объект в другой строковый объект. Во втором операторе две строки объединяются и сохраняются в третьей строке. В третьем утверждении сравниваются две строки. В четвертом операторе новый строковый объект создается с использованием уже существующего строкового объекта.
Доступ к строке медленный по сравнению с массивом символов или строкой с нулевым символом в конце.
Ключевые различия между массивом символов и строкой
- Символьный массив - это набор переменных, имеющих тип символов. String - это класс, который создается для объявления строк.
- Используя значение индекса, вы можете получить доступ к символу из массива символов. С другой стороны, если вы хотите получить доступ к определенному символу в строке, вы можете получить к нему доступ с помощью функции string's_name.charAt (index).
- Поскольку массив не является типом данных, символ также не является типом данных. С другой стороны, String, являющийся классом, действует как ссылочный тип, следовательно, можно сказать, что String является типом данных.
- Вы не можете применять операторы к массиву символов, тогда как вы можете применять операторы к строке.
- Будучи массивом, массив символов имеет фиксированную длину, и его границы могут быть легко расширены. Где String не имеет границ.
- Элементы массива хранятся в смежной области памяти, поэтому к ним можно получить доступ быстрее, чем строковую переменную.
Заключение:
Неспособность работать с массивом символов вызвала развитие стандартного строкового класса.