Справочник от Автор24
Нужна помощь?
Найдем эксперта за 5 минут
Подобрать эксперта
+2

Строковый тип

Определение 1

Строковый тип — это тип данных, значениями которого могут быть произвольные последовательности (строки) символов алфавита.

Введение

С точки зрения информатики, строковым типом (string означает нить, вереница) является тип данных, в качестве значений которого может выступать произвольная очередность (строчка) символов алфавита. Все переменные данного типа (строковые переменные) могут быть представлены фиксированным числом байтов или способны обладать произвольной длиной.

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

Строковый тип данных

Основными проблемами в области машинного представления строкового типа являются следующие аспекты:

  1. Строки способны обладать достаточно существенным размером, вплоть до десятков мегабайт.
  2. Наличие изменяющегося со временем размера, что предопределяет появление ряда трудностей при добавлении и удалении символов.

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

  1. Подход, состоящий в представлении строк в виде массива символов.
  2. Подход, состоящий в использовании метода «завершающего байта».

В походе, состоящем в представлении строк в виде массива символов, размеры массива хранятся в специальной, служебной области. Этот метод впервые был применен в языке программирования Pascal, поэтому его еще называют Pascal strings.

В немного оптимизированном варианте этот метод представлен как так называемый формат c-addr u (character-aligned address + unsigned number), используемый в языке программирования Форт. В отличие от Pascal strings, в этом методе размеры массива хранятся не вместе со строковыми данными, а входят как часть указателя на строку.

«Строковый тип» 👇
Помощь автора по теме работы
Найти автора
Решение задач от ИИ за 2 минуты
Решить задачу
Более 10 нейросетей для написания рефератов и решения задач
Найти нейросеть

К числу достоинств данного метода могут быть отнесены следующие обстоятельства:

  1. Программа в любые временные моменты обладает сведениями о размерах строчки, поэтому процедуры прибавления символов в конец, копирования строки и, естественно, определения размеров строки осуществляются достаточно оперативно.
  2. В строке могут содержаться абсолютно любой набор данных.
  3. Имеется возможность на программном уровне отслеживать выход за пределы строки во время ее обработки.
  4. Имеется возможность быстрого исполнения операции типа «взятие N-ого символа с конца строки».

В качестве недостатков этого метода необходимо выделить следующие моменты:

  1. Наличие проблем с хранением и выполнением обработки символов, имеющих произвольную длину.
  2. Возможность увеличения затрат на сохранение строк, так как, значение «длина строки» тоже может занимать некоторое место и при большом числе строчек, имеющих небольшие размеры, могут существенно увеличиться требования алгоритма к оперативной памяти.
  3. Наличие ограничения на максимальный размер строки. В современных языках программирования данное ограничение является скорее теоретическим, поскольку, как правило, размеры строки хранятся в 32-битовом поле, что определяет наибольший размер строчки в 4 294 967 295 байт, то есть, в четыре гигабайта.
  4. В случае использования алфавита с переменным размером символов (к примеру, UTF-8), в размерах сохраняется не число символов, а как раз размер строчки в байтах. Это означает, что количество символов следует подсчитывать отдельно.

Методика «завершающего байта» состоит в применении именно «завершающего байта». В этом методе следует выбрать одно из допустимых значений символов алфавита (обычно выбирается символ, имеющий нулевой код) как признак окончания строчки, и строка сохранится в виде последовательности байтов от начала до конца. Известны системы, в которых признаком окончания строки служит не нулевой символ, а байт вида 0xFF (255) или же код символа «$».».

Данный метод обладает следующими равноправными названиями:

  1. Метод ASCIIZ (или asciz), то есть, набор символов в кодировке ASCII, имеющий нулевой завершающий байт.
  2. Метод C-strings, который обладает наибольшим распространением в языке программирования Си.
  3. Метод нуль-терминированных строк.

К числу достоинств данного метода необходимо отнести следующие аспекты:

  1. Не требуется дополнительная служебная информация о строчке, необходим лишь завершающий байт.
  2. Имеется возможность представить строку без формирования отдельного типа данных.
  3. Отсутствуют ограничения на наибольшие размеры строки.
  4. Память используется в экономном режиме.
  5. Возможность простого получения суффикса строки.
  6. Возможность простой передачи строк в функции, то есть, необходимо передать только указатель на первый символ.

К недостаткам этого метода могут быть отнесены следующие моменты:

  1. Достаточно длительное исполнение процедуры определения длины и конкатенации строчек.
  2. Отсутствуют средства, контролирующие выход за пределы строки, а в случае повреждения завершающего байта присутствует вероятность повреждений значительных областей памяти, что может вызвать совершенно непредсказуемые последствия, такие как, потеря данных, полный крах программы и даже всей системы.
  3. Отсутствие возможности использования символа завершающего байта как элемента строки.
  4. Невозможно применять отдельные типы кодировок, имеющие размер символа в несколько байт (например, UTF-16), поскольку многие такие символы, к примеру, символ Ā (0x0100), имеют один из байтов, равный нулю. Следует, однако, подчеркнуть, что, например, кодировка UTF-8 не имеет данного недостатка.

Изначально в программных языках совсем отсутствовал строковый тип, то есть, программисты должны были самостоятельно формировать функции для работы со строками различных типов. В языке программирования Си применяются нуль-терминированные строки, предполагающие полный ручной контроль со стороны программистов.

Дата написания статьи: 14.10.2022
Не знаешь, как приступить к заданию?
За 5 минут найдем эксперта и проконсультируем по заданию. Переходи в бота и получи скидку 500 ₽ на первый заказ.
Запустить бота
Нужна помощь с заданием?

Эксперт возьмёт заказ за 5 мин, 400 000 проверенных авторов помогут сдать работу в срок. Гарантия 20 дней, поможем начать и проконсультируем в Telegram-боте Автор24.

Перейти в Telegram Bot