9. Символни низове

• Дефиниране на символен низ
• Въвеждане и извеждане на символни низове
• Функции за работа с низове
• Примери и задачи със символни низове

преди план следва
 
 

9. Символни низове


Символният низ представлява последователност от символи, заградени в двойни кавички, например: " Това е низ". Броят на символите в низа се нарича дължина на низа. Низът може да бъде и с нулева дължина, напр “”, т.е. празен низ.

• Дефиниране на символен низ

В езика С/С++ символните низове се разглеждат като едномерни масиви с елементи от тип char:

char aa променлива_низ[брой_на_елементите];

Пример:
char firstName[20], familyName[20];

За означаване края на низа се използва знак '\0', чийто код ASCII е 0. В общия случай, броят на елементите на масива трябва да бъде поне с 1 по-голям от броя на символите, които ще се съхраняват в него, за да има един свободен елемент за автоматично добавяне на нулевия символ накрая на низа.

• Въвеждане и извеждане на символни низове

За разлика от масивите от елементи от други числови типове, низовете могат да се въвеждат и извеждат с една инструкция:
char firstName[20];	 
cin>> firstName;				
cout<< firstName;	
Тъй като са масиви от символи, низовете могат да се въвеждат и извеждат и поелементно. В следващия фрагмент се въвеждат и извеждат точно 20 символа:
for(int i=0;i<20;i++)			 
   cin>>firstName[i];				 
for(i=0;i<20;i++)						
   cout << firstName[i];;
• Функции за работа с низове

В езика C/C++ има много функции, реализиращи различни операции с низове. Голяма част от тях са дефинирани във файла string.h.

- функция strlen:
strlen(произволен_низ)
Връща броя на символите в низа.

Пример. Да се намери дължината на низа name:
#include < iostream.h >							 
#include < string.h >
int main()
{
  char name[20]="Ivan Petrov";	
  cout<<"Низа : "<< name <<"  има дължина "<< strlen(name);
  cout<<"  символа. ";	
return 0;
}			
- функция strcat:
strcat(низова_променлива, низ )
Добавя низ към края на низовата променлива.

Пример: Да се намери пълното име name при зададени малко име firstName и фамилия familyName:
#include < iostream.h >	
#include < string.h >	
int main(){
  char firstName[20]="Ivan", familyName[20]="Petrov";	
  char name[20]="";
  strcat(name,firstName);
  strcat(name," ");
  strcat(name,familyName);
  cout<< name<< endl;
return 0;
}
- функция strcmp:
strcmp(низ1, низ2)
Сравняват се съответните символи от низ1 и низ2 на базата на техните кодове ASCII. Ако низ1 е по-голям от низ2, резултатът е цяло положително число. Ако двата низа са равни, резултатът е нула. Ако низ2 е по-голям от низ1, резултатът от сравнението е отрицателно число.

Пример:
cout<< strcmp("Ann", "Anetа”)<< endl; // извежда цяло положително число

- функция strcpy:
strcpy(низова_променлива, низ)
Функцията strcpy копира низ в низова_променлива. Ако низът е по-дълъг от низовата променлива са възможни труднооткриваеми грешки. Резултатът от копирането се връща от функцията, а също се съдържа и в низова_променлива.

Пример. Следващият код извежда низа "Ivan", който е копиран от firstName в променливата name:
char firstName[5]="Ivan";
        char name[20];
        strcpy(name, firstName);  
        cout<< name<< endl;		
 
 
 
 
преди план следва