17. string u C++ programiranju
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…
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.


