U C++ stringovi se implementiraju na dva načina. Definicijom stringa kao niz karaktera koji završava null karakterom. Null karakter je bajt čiji su svi bitovi nule. Ovaj bajt se označava specijalnim simbolom „„. Ako niz karaktera na kraju ne sadrži null karakter, niz ne predstavlja string.
Pr:
char niz[6]={‘H’,’E’,’L’,’O’,“}
Drugi pristup za inicijalizaciju stringa koristi string konstantu, koja je niz karaktera pod znacima navoda
char niz[]=“Heloo!“
Programer ne smešta null karakter na kraju string konstante, C++ kompajler automatski dodaje “ „, na kraju stringa kada inicijalizuje niz. Prilikom deklaracije se ne navodi broj karaktera koji čine string.
Pr.
Napravi program koji unosi naziv proizvoda i njegovu cenu i prikazuje unos na monitoru računara?
Rešenje.
#include <iostream>
#include <cstring>
using namespace std;
/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */
int main(int argc, char** argv)
{
char text[100];
float cena;
cout<<„Unesi Naziv?“<<endl;
cin>> text;
cout<<“ Unesi cenu?“<<endl;
cin>> cena;
cout<<“ Nayiv proiyvoda je „<<text<<“ a cena „<< cena<<endl;
return 0;
}
Pr2.
Koristeći klasu string spoji dva stringa u jedan?
Rešenje.
#include <iostream>
#include <string>
using
namespace
std;
int
main()
{
string a, b;
a =
"prvi"
;
b =
"drugi"
;
a = a +
" "
+ b;
cout << a << endl;
//stampa 'prva druga'
b = b + b;
cout << b << endl;
//stampa'drugadruga';
return
0;
}
Funkcije koje omogućavaju rada sa tekstualnim nizovima
- strlen(char[] niz)– vrednost funkcije je dužina niza bez znak null
- strcpy(char[] destinacija, char[] izvor)– kopira tekstualni niz sa izvora do destinacije uključujući i znak null
- strncpy(char[] destinacija, char[] izvor, int N)– kopira najviše N znakova od izvora do destinacije, znak null se kopira samo ako spada u N znakova, inače se uvodi sam. Napomena: niz destinacija mora da bude dovoljno velik da bi primio sve znakove sa izvora
- strcmp(char[] prvi, char[] drugi)– upoređuje niz prvi i niz drugi i kao vrednost daje 0 ako su nizovi jednaki
- strncmp(char[] prvi, char[] drugi, int N)– upoređuje N znakova niza prvi i drugi i ako su isti dodeljuje vrednost 0
- strcat(char[] prvi, char[] drugi)– dodaje nizu prvi niz drugi, niz prvi treba da bude dovoljno velik da prihvati i znakove niza drugi
- strncat(char[] prvi, char[] drugi, int N)– nadovezije prvih N znakova niza drugi nizu prvi
Rešenje.
char d[] = „tekst“;
cout << strlen(a) << endl; //stampa 8
cout << strlen(c) << endl; //stampa ‘5’
char t[100];
strcpy(t, „Neka vrednost“); //t=“Neka vrednost“
strcpy(t, „Neshto drugo“); //t=“Neshto drugo“
strcpy(t, a); //t=“prvi niz“
strncpy(t, b, 5); //t=“drugi niz “ (ne kopira “)
t[5] = “; //t=“drugi“
strcat(t, b); //t=“drugi niz“
cout << t << endl; //pechati ‘drugi drugi niza’
cout << strcmp(t, a) << endl; //pechati ‘1’
cout << strcmp(c, d) << endl; //pechati ‘0’
return 0;
}
using namespace std;
/* run this program using the console pauser or add your own getch, system(„pause“) or input loop */
int main(int argc, char** argv)
{
string niz[10];
int i,n;
cout<<“ Koliko reci ima vas niz_“;
cin>>n;
for (i=0;i<n;i++)
{
cout<<“ unesi „<<i+1<< “ element niya“<<endl;
cin>> niz[i];
}
for (i=0;i<n;i++)
{
cout<< niz[i]<<“ „;
}
return 0;
}
Pr5.
Unesite ime, prezime, datum rođenja i tekuću godinu; Naravite program koji izračunava godine starosti za osobu čije podatke ste uneli?
Rešenje:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int god, god1, god2;
string ime;
cout<<„Upisi svoje ime:“;
cin>>ime;
cout<<endl<<„Upisi godinu svog rodjenja:“;
cin>>god1;
cout<<endl<<„Koja je godina sada? „;
cin>>god2;
god=god2-god1;
cout<<endl<<ime<<“ ima „<<god<<“ godina.“<<endl;
return 0;
}