E-gradiva > Računalništvo > Programiranje > Upravljanje s programirljivimi napravami > Nizi znakov > Funkcije za delo z nizi znakov

Prijava

Funkcije za delo z nizi znakoV

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>

}
}

 

Branje nizov

 

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.