Представление строк в памяти.

Представление строк в памяти зависит от того, насколько из-

менчивыми являются строки в каждой конкретной задаче, и средства

такого представления варьируются от абсолютно статического до

динамического. Универсальные языки программирования в основном

обеспечивают работу со строками переменной длины, но максимальная

длина строки должна быть указана при ее создании. Если програм-

миста не устраивают возможности или эффективность тех средств ра-

боты со строками, которые предоставляет ему язык программирова-

ния, то он может либо определить свой тип данных "строка" и ис-

пользовать для его представления средства динамической работы с

памятью, либо сменить язык программирования на специально ориен-

тированный на обработку текста (CNOBOL, REXX), в которых предс-

тавление строк базируется на динамическом управлении памятью.

ВЕКТОРНОЕ ПРЕДСТАВЛЕНИЕ СТРОК. Представление строк в виде

векторов, принятое в большинстве универсальных языков программи-

рования, позволяет работать со строками, размещенными в статичес-

кой памяти. Кроме того, векторное представление позволяет легко

обращаться к отдельным символам строки как к элементам вектора -

по индексу.

Самым простым способом является представление строки в виде

вектора постоянной длинны. При этом в памяти отводится фиксирован-

ное количество байт, в которые записываются символы строки. Если

строка меньше отводимого под нее вектора, то лишние места запол-

няются пробелами, а если строка выходит за пределы вектора, то

лишние (обычно справа строки) символы должны быть отброшены.

На рис.4.3 приведена схема, на которой показано представле-

ние двух строк: 'ABCD' и 'PQRSTUVW' в виде вектора постоянной

длины на шесть символов.

┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐

│ A │ B │ D │ │ │ │ │ P │ Q │ R │ S │ T │ U │

└───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘

Рис. 4.3. Представление строк векторами постоянной длины