string - u C, C++, C# - sličnosti i razlike
U jeziku C
String je niz karaktera (slova) koji se završava sa null karakterom ('\0')
char str[7];
a može im se dodeliti vrednost na dva načina:
- char str[7] = {'Z', 'd', 'r', 'a', 'v', 'o', '\0'}; - poslednji element mora biti null karakter
- char str[7] = "Zdravo"; - string je niz karaktera u dvostrukim navodnicima, kod ovog slučaja kompajler će napraviti niz od 7 karaktera, od kojih će prvih 6 biti popunjeno vidljivim karakterima koji su dodeljeni stringu, a na poslednje mesto će se postaviti null karakter.
Ovde možemo primetiti da je veličina niza jednaka dužini stringa plus jedan.
Kao i svakom nizu i stringu se može dodeliti vrednost pojedinačnog elementa po indeksu (ili pročitati), na primer
str[1] = 'a'
Ispis i učitavanje stringova:
Da bismo ispisali string, kristimo printf sa specijalnim kontrolnim znakom %s:
printf("s",str);
Da bismo učitali string koristimo scanf, takođe sa %s
scanf("%s",str);
Biblioteka za rad sa stringovima:
Skoro sve ostale funkcije za rad sa stringovima se nalaze u biblioteci string.h. Neke od najčešće korišćenih funkcija su:
strcpy(d,s); // kopira string s u string d
strcat(d,s); // nadovezuje string s na string d
strchr(s,c); // vraća pokazivać na prvu pojavu znaka c u stringu s,
strrchr(s,c) // vraća pokazivač na poslednju pojavu znaka c u stringu s
strlen(s); // vraća dužinu stringa s
strstr(s,t); // vraća pokazivač na prvu pojavu stringa t u stringu s
Spoljašnji linkovi:
- https://www.w3schools.com/c/c_ref_string.php
- https://cplusplus.com/reference/cstring/
- https://www.geeksforgeeks.org/c/c-library-string-h/
- Jedno dobro objašnjenje na engleskom jeziku: https://www.programiz.com/c-programming/c-strings
- Spisak funkcija za rad sa znakovima i stringovima u C-u (na našem jeziku)
- neke lekcije na platformi iz ranijih školskih godina:
U jeziku C++
Info: Bilo koju C biblioteku možete koristiti u C++ (na primer, ako je u C jeziku stdio.h, u C++ će se koristiti cstdio)
Ispis i učitavanje stringova:
Da bismo ispisali string, kristimo cout :
cout<<str
Da bismo učitali string koristimo cin, ali samo ako se učitava samo jedna reč, jer se ovde učitava do prvog razmaka ili prelaska u naredni red:
cin>>str
Ako treba da se učita ceo red u kojem ima i razmaka koristimo getline:
getline(cin, str);
Za rad sa stringovima je najlakše da se koristi klasa string, pa se na početku ubacuje:
#include <string>
Sada se spajanje stringova može izvesti samo korišćenjem znaka +.
Pošto se ovde koristi klasa string, nisu funkcije, već metode koje se koriste tako što se navede naziv stringa, stavi tačka, pa zatim naziv metode i zagrade u kojima mogu da se nalaze i parametri u zavisnosti od metode.
Na primer, ako se traži dužina stringa:
int duzina = str.length(); // dužina stringa
length()/size(): Vraća broj karaktera.
str.length() //vraća dužinu stringa str
str.size() // radi isto
empty(): Proverava da li je string prazan.
str.empty() // vraća true ako je string str prazan
operator +(Concatenation): Spajanje stringova (npr.,s1 + s2).
str = "Pera" + " " + "Kojot" // spajanje stringova
append(): Dodavanje na kraj (npr.,s1.append("svet")).insert(): Umetanje na određenu poziciju.
str.insert(x,str2) // umeće kopiju str2 počev od pozicije x
str.insert(x,n,'z') // umeće slovo 'z' n puta, počev od pozicije x
find(): Traženje pozicije podstringa ili slova u stringu (vraća poziciju ilistd::string::npos).
str.find('z') // vraća poziciju prvog pojavljivanja slova 'z' u stringu str, gledano od početka stringa
string s = "banana";
size_t pos = s.find('a'); // → 1
str.find('z',x) // vraća prvu poziciju počev od pozicije x na kojoj se znak 'z' nalazi u str
size_t pos = s.find('a', 3); // → 3
str.find(str2,x) // vraća prvu poziciju počev od pozicije x gde se string str2 nalazi u str
str.find(str2) // vraća poziciju prvog pojavljivanja posdtringa str2 u stringu str, gledano od početka stringa str
rfind(): Traženje pozicije poslednjeg pojavljivanja podstringa ili slova u stringustring s = "banana";
size_t pos = s.rfind('a'); // 5 (poslednje 'a')
size_t pos2 = s.rfind('a', 4); // 3 (traži poslednje 'a' ali samo pre pozicije 4 (uključujući 4))substr(): Izdvajanje podstringa.
str.substr(pocetak,duzina) // izdvajanje podstringa dužine duzina od pozicije pocetak
// (voditi računa da je redni broj početne pozicije u stringu 0)
replace(): Zamena dela stringa.
str.replace(x,n,str2) // zamenjuje n znakova u str počev od pozicije x znakovima iz string objekta str2
clear(): Brisanje sadržaja stringa.<<(cout) &>>(cin): Ispis i unos stringova.
Spoljašnji linkovi:
-
- https://www.manuelradovanovic.com/2015/10/rad-sa-stringovima-u-c-programskom.html
- https://www.svetprogramiranja.com/stringovi.html
- https://www.petlja.org/sr-Latn-RS/biblioteka/r/lekcije/prirucnik-cpp/stringovi1
- https://www.petlja.org/sr-Latn-RS/biblioteka/r/lekcije/prirucnik-cpp/stringovi2
- .
- https://cplusplus.com/reference/string/string/
- .
- https://www.w3schools.com/cpp/cpp_ref_string.asp
- .
U jeziku C#
Ovde ima baš dosta metoda za rad sa stringom: dužina, podstring, obrtanje stringa, ...
Unos i ispis
U C# string se može uneti sa tastature koristeći Console.ReadLine()
Console.Write() ili Console.WriteLine() – ispis na ekran.
Primeri nekih metoda
s.Length; // dužina stringa
char c = s[0]; // pristup slovu
string t = s + " world"; // spajanje stringova
s.IndexOf("lo"); // vraća poziciju podstringa "lo" ili -1 ako ga ne nađe
int poz = s.IndexOf('a', 3); // traži 'a' počevši od indeksa 3
s.LastIndexOf('l'); // traži poslednje pojavljivanje slova
int poz = s.LastIndexOf('a', 13); // traži poslednje pojavljivanje slova 'a' ako se kao kraj računa indeks 13
Spoljašnji izvori:
- https://petlja.org/sr-Latn-RS/biblioteka/r/lekcije/prirucnik-csharp/stringovi1
- https://petlja.org/sr-Latn-RS/biblioteka/r/lekcije/prirucnik-csharp/stringovi2
- www.manuelradovanovic.com/2016/01/rad sa stringovima u c# programskom jeziku
- .
- C# String Methods
- https://www.codecademy.com/learn/learn-c-sharp/modules/learn-c-strings/cheatsheet
- neke lekcije na platformi iz ranijih školskih godina: