Стандартната библиотека на C++ предоставя string, който ни улеснява в обработването и манипулирането на низове от символи. Тъй като стринговете в същността си представляват последователност от символи, в този урок ще ги разгледаме като масив от тип char.

Единствената особеност при тази репрезентация на стринговете е, че последният символ от нашия низ трябва да бъде ‘\0’. Това е специален символ, обозначаващ края на нашия низ. Това е необходимо, тъй като големината на низовете е статична (за разлика от големината на стринговете, която е динамична). Например, ако декларираме символен масив от 15 елемента, но решим да съхраним думата „Pineapple“ в него, ние ще запълним само първите 9 елемента от масива. И тъй като последните 6 елемента са неопределени, трябва да се избегне достъпа им. Точно поради тази причина, непосредствено след последния определен елемент от масива, трябва да се постави символа ‘\0’, за да се обозначи края на низа и да не се обхожда по-натам. Трябва също така да внимаваме да не превишаваме ограничението от 15-те символа (в случая). Нагледна репрезентация:

Забележете, че ако декларираме низ по следния начин:

  1. char myCString [] = „Pineapple“;

 

символът ‘\0’ се поставя автоматично в края на низа. Затова и тази форма на декларация е за предпочитане пред стандартната за масиви, тъй като при нея трябва да добавим ръчно ‘\0’ в края:

  1. char myCString [] = { ‘P’, ‘i’, ‘n’, ‘e’, ‘a’, ‘p’, ‘p’, ‘l’, ‘e’, ‘\0’ };

И в двата случая масивът myCString е деклариран с дължина 10 елемента, 9 символа за думата „Pineapple“ и 1 за последния знак.

Обърнете внимание, че говорим за инициализиране на масив от символи в момента на неговото деклариране, а не за присвояване на стойности след неговото деклариране. Не трябва да забравяме, че това са преди всичко масиви и сме зависими от техните ограничения. Тоест след началното инициализиране на масива, НЕ е възможно просто да му присвояваме стойности по следния начин:

  1. myCString = „Banana“;

Присвояването на стойности трябва да се прави поотделно за всеки елемент от масива:

  1. myCString[0] = ‘P’;
  2. myCString[1] = ‘e’;
  3. myCString[2] = ‘a’;
  4. myCString[3] = ‘r’;
  5. myCString[4] = ‘\0’;

Ето една примерна програма за приложението на низовете:

  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5.      char text[] = „Enter some text (max 30 characters):“;
  6.      char usertext[30];
  7.      cout << text;
  8.      cin >> usertext;
  9.     cout << „You’ve entered the following text: „ << usertext;
  10.     return 0;
  11. }

Забележете, че конвертирането на низ в стринг става бързо и лесно:

  1. char myCString[] = „Pineapple“;
  2. string myString = myCString;

Включвайки header файла <string>, можем за използваме C++ функции от стандартната библиотека, работещи със стрингове и низове. Някои от по-използваните са:

  • strcpy (str2,str1) – копира str1 във str2
  • strcat (str2,str1) – добавя str1 в края на str2
  • strcmp (str1,str2) – сравнява str1 със str2
  • strlen (str) – връща дължината на стринга/низа

Автор: Мартин Михайлов