Ker se nizi zelo pogosto uporabljajo v programih, obstaja v jeziku C++ mnogo funkcij in operatorjev, ki nam olajšajo delo z njimi.
Npr. standardni vhodni tok (cin) in standardni izhodni tok (cout) delata z nizi znakov avtomatično !
To nam omogoči, da napišemo program, kot npr.:
#include <iostream>
#include <string.h>
using namespace std;
void main()
{
char name[30];
cout << "Kako ti je ime?";
cin >> name; // prebere niz s tipkovnice in doda znak null
cout << "Pozdravljen " << name << "!" << endl;
system("pause");
}
Standardne funkcije za delo z nizi so definirane v
knjižnici "string.h".
Uporabljene standardne funkcije iz knjižnice:
| strcpy( niz1, niz2 ) | prekopira niz2 v niz1 |
| strcat( niz1, niz2 ) | niz2 doda k niz1 |
| strlen( niz ) |
vrne dolžino niza |
Napišemo lahko tudi svoje funkcije za obdelavo nizov! Te so enostavnejše od splošnih funkcij za delo s polji, ker lahko uporabimo znak null za ugotavljanje velikosti niza!
Npr. funkcija, ki spremeni vse znake v nizu v majhne:
void v_male_crke( char beseda[] )
{
for( int i = 0; beseda[i] != '\0'; i++ )
{
beseda[i] = tolower( beseda[i] ); //iz <ctype.h>
}
}
Pozor: če niz vsebuje prazna mesta, ga iz standardnega vhodnega toka (cin) z operatorjem << ne moremo v celoti prebrati!
To je zaradi tega, ker vhodni tokovi uporabljajo prazna mesta kot ločila med vrednostmi.
Npr., če program vsebuje:
char stavek[50];
cin >> stavek;
in uporabnik vpiše besedilo: "To je test”, se v spremenjivko stavek vpiše le prva beseda (To), ostale besede (”je” in ”test”) ne bodo prebrane!
Problem rešimo tako, da uporabimo funkcijo getline().
Ta funkcija prebere vse znake in se ustavi, ko naleti
na znak newline ( ’\n’).
getline() ima dva vhodna argumenta:
- niz, v katerega bodo prebrani znaki
- največje število znakov, ki jih prebere
Primer uporabe:
char stavek[50];
cin.getline( stavek, 50);
Če sedaj uporabnik vpiše: "To je besedilo", se v spremenjivko stavek vpišejo vsi znaki, kot so bili vtipkani.