Do sada smo naučili kako C++ radi sa:
- brojevima (
int,float,double) - karakterima (
char) - logičkim vrednostima (
bool)
Ali većina realnih programa ne radi samo sa brojevima.
Vrlo često program mora da obrađuje tekst.
Na primer:
- ime korisnika
- prezime
- email adresu
- naziv proizvoda
- grad
- lozinku
- poruku
- naslov dokumenta
- pretragu
- unos rečenice
Za takve situacije koristimo tip:
string
Rad sa tekstom je jedna od najvažnijih oblasti programiranja, jer gotovo svaka aplikacija koristi tekstualne podatke.
U ovoj lekciji naučićemo:
- šta je
string, - kako se pravi string promenljiva,
- kako se unosi tekst,
- razliku između
charistring, - rad sa
getline, - osnovne operacije nad stringovima,
- i najčešće greške početnika.
Šta je string?
String predstavlja niz karaktera.
Drugim rečima:
tekst sastavljen od više znakova.
Primer:
string ime = "Marko";
Ovde:
M
a
r
k
o
su pojedinačni karakteri.
Zajedno čine jedan string.
Možemo zamisliti string kao niz char vrednosti koje zajedno predstavljaju tekst.
Zašto string nije char?
Ovo je veoma važna razlika.
char čuva:
jedan znak
Primer:
char slovo = 'A';
string čuva:
više znakova
Primer:
string ime = "Marko";
Razlika:
'A'
= jedan karakter
"Marko"
= tekst
Primer:
Pogrešno:
char ime = 'Marko';
Ispravno:
string ime = "Marko";

Uključivanje string biblioteke
Za rad sa stringovima koristimo biblioteku:
#include <string>
Kompletan primer:
#include <iostream>
#include <string>
using namespace std;
Neki kompajleri dozvoljavaju rad sa stringovima i bez eksplicitnog uključivanja ove biblioteke, ali dobra praksa je da je uvek uključimo.
Deklaracija string promenljive
Primer:
string ime;
Ovde smo napravili string promenljivu.
Dodela vrednosti:
string grad = "Beograd";
Još primera:
string prezime = "Petrovic";
string email = "student@fakultet.rs";
string predmet = "Programiranje";
Ispis string vrednosti
Koristi se cout.
Primer:
#include <iostream>
#include <string>
using namespace std;
int main() {
string ime = "Marko";
cout << ime;
return 0;
}
Rezultat:
Marko
Unos string vrednosti pomoću cin
Primer:
string ime;
cin >> ime;
Ako korisnik unese:
Marko
radi normalno.
Ako unesemo:
Marko
Petar
uzima samo prvu reč.
Zašto?
Jer:
cin
prekida unos na prvom razmaku.
Problem sa cin kod stringova
Primer:
string punoIme;
cin >> punoIme;
Ako korisnik unese:
Marko Petrovic
rezultat:
Marko
Petrovic ostaje nepročitan.
To je veoma česta početnička greška.

getline()
Za unos cele linije teksta koristi se:
getline()
Primer:
string punoIme;
getline(cin, punoIme);
Ako korisnik unese:
Marko Petrovic
rezultat:
Marko Petrovic
Sada se čuva ceo unos.
Primer sa getline
#include <iostream>
#include <string>
using namespace std;
int main() {
string imePrezime;
cout << "Unesi ime i prezime: ";
getline(cin, imePrezime);
cout << "Uneli ste: " << imePrezime;
return 0;
}
Problem kada kombinujemo cin i getline
Ovo je klasična zamka.
Primer:
int godine;
string ime;
cin >> godine;
getline(cin, ime);
Problem:
getline() odmah preskače unos.
Zašto?
Jer nakon:
cin >> godine;
ostaje znak ENTER u ulaznom baferu.
Rešenje:
cin.ignore();
Ispravno:
cin >> godine;
cin.ignore();
getline(cin, ime);
Spajanje stringova
Stringove možemo spajati pomoću:
+
Primer:
string ime = "Marko";
string prezime = "Petrovic";
string punoIme = ime + " " + prezime;
Rezultat:
Marko Petrovic
Dužina stringa
Možemo dobiti broj karaktera.
Koristi se:
.length()
Primer:
string tekst = "Programiranje";
cout << tekst.length();
Rezultat:
13
Pristup pojedinačnim karakterima
String je niz karaktera.
Možemo pristupiti svakom znaku.
Primer:
string ime = "Marko";
cout << ime[0];
Rezultat:
M
Primer:
cout << ime[1];
Rezultat:
a

Menjanje karaktera
Možemo menjati pojedinačne znakove.
Primer:
string ime = "Marko";
ime[0] = 'D';
cout << ime;
Rezultat:
Darko
Poređenje stringova
Možemo porediti tekst.
Primer:
string lozinka = "12345";
if (lozinka == "12345") {
cout << "Tacno";
}
Poređenje radi direktno.
Prazan string
Možemo imati prazan string.
Primer:
string tekst = "";
To znači:
string postoji, ali nema sadržaj.
Provera praznog stringa
Primer:
if (tekst.empty()) {
cout << "String je prazan";
}
Realni primer
Login forma:
string korisnickoIme;
string lozinka;
Prodavnica:
string nazivProizvoda;
Forma:
string adresa;
Email:
string email;
Komentar:
string poruka;
String je jedan od najčešće korišćenih tipova podataka.
Najčešće greške početnika
1. Mešanje char i string
Pogrešno:
char ime = 'Marko';
2. Korišćenje cin za više reči
Pogrešno očekivanje:
cin >> punoIme;
da pročita celu rečenicu.
3. Zaboravljen cin.ignore()
Kod kombinacije:
cin
i:
getline
4. Pogrešni navodnici
String koristi:
dvostruke navodnike
"tekst"
Ne:
'tekst'
5. Izlazak van opsega
Pogrešno:
string ime = "Ana";
cout << ime[20];
Greška.
Praktičan primer programa
#include <iostream>
#include <string>
using namespace std;
int main() {
string ime;
string prezime;
cout << "Unesi ime: ";
getline(cin, ime);
cout << "Unesi prezime: ";
getline(cin, prezime);
string punoIme = ime + " " + prezime;
cout << "Student: " << punoIme;
return 0;
}
Zašto je string toliko važan?
Bez stringova nema:
- formi
- registracije
- login sistema
- email validacije
- chat aplikacija
- CMS sistema
- pretrage
- unosa podataka
- realnih aplikacija
Ovo je jedna od ključnih oblasti.
Rezime
U ovoj lekciji naučili smo:
string
predstavlja tekstualni podatak
Važne operacije:
- unos
- ispis
- getline
- spajanje
- dužina
- pristup karakterima
- poređenje
String je jedna od najvažnijih osnova modernog programiranja.
Mini test
- Šta je string?
a) jedan karakter
b) niz karaktera
c) broj - Koji unos čita celu liniju?
a) cin
b) getline - Kako spajamo stringove?
a) –
b) + - Kako dobijamo dužinu?
a) .length()
b) .sizeof() - Šta je problem sa cin kod stringa?
a) čita samo do razmaka
b) ne radi uopšte
Zadaci za vežbu
- Napravi string promenljivu za ime.
- Unesi puno ime pomoću getline.
- Spoji ime i prezime.
- Ispiši prvo slovo stringa.
- Prikaži dužinu unetog teksta.
Domaći zadatak
Napravi mini formular koji traži:
- ime
- prezime
- grad
- omiljeni predmet
Zatim ispisuje lepo formatiran profil studenta.
