You are on page 1of 13

Gregorics Tibor Egyszer programok C++ nyelvi elemei 1

Egyszer C++ program szerkezete

A konzol alkalmazs projektjbe egyetlen cpp kiterjeszts (alaprtelmezsben


main.cpp) forrsllomny tartozik. Az llomny elejn a kdrszben hasznlt utastsokhoz
szksges knyvtrakat nevezhetjk meg az #include kezdet sorok segtsgvel. Ezek
kztt a leggyakrabbak az #include <iostream> (szabvnyos beolvasshoz s kirshoz),
az #include <fstream> (szveges llomnyok kezelshez), az #include <string>
(karakterlncok kezelshez) s az #include <cmath> (matematikai fggvnyek
hasznlathoz). Az #include kezdet sorokat mindig a using namespace std utasts
kvesse!
Ezutn kvetkezzen az gynevezett main() fggvny, amelyben programkdunkat
helyezzk el. A vgrehajthat utastsokbl s deklarcikbl ll programkd tbbnyire
hrmas tagozds: beolvass, szmts s kirs rszekbl ll, de nem ritka, hogy a beolvass
vagy a kirs sszekeveredik a szmts rsszel. A vgrehajthat utastsok strukturlt
szerkezetben helyezkednek el, amelyet tabultorok elhelyezsvel emelnk ki. A deklarci
megnevezi a programban hasznlt vltozkat, megadnja azok tpust. Azokat a vltozkat,
amelyek a feladat tervben szerepelnek, a programkd elejn deklarljuk, a tbbi vltozt
pedig abban a blokkban, ahol szksg van rjuk.
A kd vgn mindig egy gynevezett kilp utastsnak (return 0) kell llnia. Az itt
szerepl nulla rtk a programot futtat krnyezethez, az opercis rendszerhez jut el, s azt
jelzi, hogy a program rendben lefutott. A hibs mkds miatti lellskor ettl eltr hibakd
keletkezik. A kdban magunk is elhelyezhetnk olyan kilp utastst, amely hibakddal ll
le. Erre az egyszer programokban egyformn hasznlhat a return 1 s az exit(1), de az
sszetettebb programok esetn az utbbi az ltalnosabb megolds, ehhez azonban szksg
van az #include <cstdlib>-re.
A konzolos alkalmazsok vgrehajtsa sorn egy gynevezett konzol-ablak nylik a
kpernyn, amelyben a billentyzet keresztl bevitt jeleket, illetve a kpernyre kirt
rtkeket olvashatjuk. A lells utn ez az ablak megsznik. Ha egy fejleszt eszkz
keretben futtatunk egy programot, akkor annak befejezdse utn tbbnyire csak egy kln
<enter> letsre sznik meg ez a konzol-ablak. Ha azonban programot nllan futtatjuk,
akkor a program lellsakor ez az ablak azonnal megsznik, gy nincs lehetsgnk a
konzolablakba rt eredmnyek elolvassra. Ennek kivdsre a lellsi pontok el vrakozsi
utastst helyezhetnk el. A char ch; cin >> ch; ugyan nem tl elegns, de opercis
rendszerektl fggetlen vrakoz utasts, amely feloldshoz elbb tetszleges karaktert,
majd az <enter> billentyt kell letni.

Deklarci
A vltozk deklarcija a tpus nevnek s utna legalbb egy szkzt kveten a vltoz
nevnek megadsbl ll. A deklarcik vgrehajtsakor megfelel mret hely foglaldik le
a memriban, ahol bizonyos esetekben (a vltoz tpustl fggen) a vltoz rtke
troldik, mskor viszont csak az rtk elrshez szksges segdinformci. Tbb azonos
tpus vltoz egyszerre is deklarlhat ha a tpus nv utn a vltozneveket vesszvel
elvlasztva felsoroljuk. Egy vltoz deklarcija sszevonhat a kezdeti rtkadsval.
tpusnv vltoz;
tpusnv vltoz1, vltoz2, vltoz3;
tpusnv vltoz = rtk;
tpusnv vltoz = kifejezs;
Gregorics Tibor Egyszer programok C++ nyelvi elemei 2

Alapvet tpusok
A C++ nyelvben leggyakrabban hasznlt alaptpusok az albbiak:

Egsz illetve termszetes szmok tpusa

tpusnv: int
rtkek: 83, -1320
mveletek: + - * / % == != < <= > >=
megjegyzs: az oszts eredmnye egsz

Vals szmok tpusa

tpusnv: double
rtkek: 83.0, -1320.345
mveletek: + - * / == != < <= > >=
megjegyzs: az oszts eredmnye vals

Logikai tpus

tpusnv: bool
rtkek: false, true
mveletek: && || ! == !=

Karakterek tpusa

tpusnv: char
rtkek: a, 3, \
mveletek: == !=

Karakterlnc tpusa

tpusnv: string
rtkek: "valami", " "
Karakterlnc-konstans sortrse:
"Ez itt egy nagyon hossz \
msik sorba is tnyl szveg"
mveletek: size(length) + [] c_str() substr() == !=
string str esetn:
str.size() az str hossza (karaktreinek szma)
str[i] az str i-edik karaktere
str + "vge" kt karakterlnc sszefzse
str.c_str() str talaktsa C stlus lncc
str.substr(i,j) str rsznek kivgsa
atoi(str.c_str())szmm konvertlsa
megjegyzs: Alkalmazshoz szksges az #include <string> direktrva.
A string az std nvtr eleme.
Gregorics Tibor Egyszer programok C++ nyelvi elemei 3

Elemi programok

rtkads

A vltoz := kifejezs rtkadst a C++ nyelvben vltoz = kifejezs alakban rjuk.


Szimultn rtkadsok
A szimultn rtkadsokat kznsges (rendszerint egy sorba rt) rtkadsok
szekvencijaknt (lsd szekvencia) lehet lerni.
rtkads rtke

A C++ nyelv rtkadsnak, mint utastsnak, rtke is van, mgpedig az rtkl adott
kifejezs rtke. Ms szval egy rtkads egyszerre utasts is, s kifejezs is. Ezrt lehet
pldul olyan rtkadsokat rni, mint
vltoz1 = vltoz2 = kifejezs;

amely mindkt vltoznak a kifejezs rtkt adja. Ezt olyan szimultn rtkadsok
kdolsnl hasznljuk, ahol minden vltoz ugyanazt az rtket kapja meg.
Gyakori hiba, hogy a vltoz == kifejezs egyenlsg-vizsglat helyett vltoz =
kifejezs formt runk. Sajnos mivel az rtkadsnak is van rtke, s egy tetszleges
rtk knnyen konvertldik logikai rtkk ezt a fordtprogram nem jelzi hibaknt. Ha
pldul az i==1 kifejezs helyett rosszul az i = 1 rtkadst hasznljuk, akkor ennek az
rtkadsnak az rtke 1, amit a C++ true logikai rtknek tekint. Ez a logikai kifejezsnek
sznt rtkads mindig igaz lesz, mikzben az i vltoz j rtket kap.
Specilis rtkadsok
++i, i++ i = i+1
--i, i-- i = i-1

Vigyzat! Kifejezsknt hasznlva az i++ az i kezdeti rtkt a ++i az i megnvelt rkt


kpviseli.

Programszerkezetek

Szekvencia

Az utastsok vgrehajtsi sorrendje (szekvencija) az utastsok egyms utni elhelyezsvel


fejezhet ki. Mivel az utastsok vgt ltalban pontosvessz jelzi, ezrt a pontosvessz
egyfajta szekvencia-hatrolnak (szekvencia pontnak) szmt.
Tbb utasts szekvencija befoglalhat egy gynevezett utastsblokkba, amelyet a fordt
egyetlen br sszetett utastsknt kezel. Az utastsblokk elejt a nyit kapcsos zrjel,
vgt a csuk kapcsos zrjel jelzi. Mivel az utastsblokk egy utasts, utastsblokkok
szekvencijrl is beszlhetnk, ahol a szekvencia-hatrolk a csuk kapcsos zrjelek.
sszetett utastsnak, azaz szekvencinak tekinthet az albbi rtkads is. Ez elszr
megnveli a k rtkt, utna ezt a megnvelt rtket adja j-nek, majd i-nek.
i = j = ++k;
Gregorics Tibor Egyszer programok C++ nyelvi elemei 4

Elgazs

Az elgazs az a program, amely egy felttel aktulis logikai rtktl fggen ms-ms
rszprogramot hajt vgre. Tbbfle rsmdot is szoktak alkalmazni:

if(felttel) if(felttel){ if(felttel){


{ g_1 g_1
g_1 } }else{
} else{ g_2
else g_2 }
{ }
g_2
}

Egyszerbb esetben
if(felttel) ut_1;
else ut_2;

A ki nem rt else g res utasts gat jelent:


if(felttel)ut_1;

Sokg elgazs

A sokg elgazst egymsba gyazott if-else elgazsokkal kdolhatjuk. Tudni kell


azonban, hogy gy az absztrakt elgazssal ellenttben, amelyik nem-determinisztikus s ha
egyik felttel sem teljesl, akkor abortl ez determinisztikus s ha egyik felttel sem
teljesl, akkor res programknt mkd kdot kapunk. Ez azonban nem baj, mert ha az
absztrakt elgazs helyes volt, akkor annak valamelyik felttele biztosan teljesl, s brmelyik
determinisztikus vltozat is helyes. A kdban hasznlhatunk sok g utn egy kln else gat
is, amely az absztrakt vltozathoz kpest egy extra lehetsget biztost.
if(felttel_1){
g_1
}
else if(felttel_2){
g_2
}
else if(felttel_3)

else{
g_n+1
}

Specilis sokg elgazs


switch (kifejezs) {
case konstans1 : utastssorozat1 ; break;
case konstans2 : utastssorozat2 ; break;
case konstans3 :
case konstans4 : utastssorozat34 ; break;
default : utastssorozat5 ;
}
Gregorics Tibor Egyszer programok C++ nyelvi elemei 5

Ciklus

Ciklusrl akkor beszlnk, amikor egy programot (ciklusmag) mindannyiszor jra s jra
vgrehajtunk, valahnyszor egy megadott felttel (ciklusfelttel) aktulis logikai rtke igaz.
while(felttel){
mag
}
Ciklust tartalmaz nevezetes sszetett utastsok
A do-while utasts a
A for utasts a
mag;
prog_1;
while ( felt ){
while(felt){
mag
mag;
}
prog_2;
} kd egyszerbb rsra hasznlhat.
kd egyszerbb rsra hasznlhat. Formja:
Formja: do{
mag
for(prog_1;felt;prog_2){
}while ( felt )
mag
} Egyrszt adatbevitel ellenrzsnl
ltalban az gynevezett szmlls hasznljuk:
ciklusokhoz, illetve az iteratv szerkezet do{
adatok feldolgozshoz hasznljuk. adatbevitel
if(kritrium) zenet
for(i=0;i<n;++i){ }while ( kritrium )
mag
} msrszt amikor a programot alkalmass
Az i az gynevezett ciklus szmll. tesszk arra, hogy tetszleges sokszor
futtathassuk:
Ha a ciklusmag egyetlen utastsbl ll,
akkor hasznlhat az albbi forma: do{
program
for(i=0;i<n;++i) utasts; cout << "Folytatja? (I/N)";
char ch; cin >> ch;
}while (ch!=N && ch!=n);
Gregorics Tibor Egyszer programok C++ nyelvi elemei 6

Szabvnyos be- s kimenet


Az albbi kdrszlet a szabvnyos beolvass, illetve kirs legfontosabb utastsait mutatja be.
#include <iostream>

cin >> vltoz1 >> vltoz2;


cout << kifejezs1 << kifejezs2;
cout << endl;

Szm ellenrztt beolvassa

Sokszor van olyan kdra szksgnk, amellyel egy egsz szmot kell beolvasnunk.

int i;
cin >> i;

Ez a beolvass elszll, ha nem szmformj karaktereket adunk meg. Ezt a hibt a


cin.fail() fggvnyhvssal krdezhetjk le: ha ez igazat ad vissza, akkor nem sikerlt az
olvass. J tudni, hogy ezutn csak akkor lehet jra olvasni, ha egyrszt trljk a hibaesetet
(cin.clear()), msrszt egy specilis utastssal kirtjk a billentyzet-puffert
(getline(cin,tmp,\n), ebben a tmp egy string tpus vltoz).

Az albbi programrszlet egy pozitv egsz szmot olvas be. Mindaddig jra s jra
prblkozik a beolvasssal, amg nem kap helyes adatot:

int n;
bool hiba = false;
do{
cout << "Adjon meg egy pozitv egsz szmot ";
cin >> n;
hiba = cin.fail();
if(hiba) cin.clear();
string tmp = "";
getline(cin,tmp);
hiba = hiba || tmp.size()!=0 || n<0;
if(hiba) cout << "Hibs adat!" << endl;
}while(hiba);

Szerkesztett formtum beolvass, kirs

A formtumjelz flageket a cin.setf(), cout.setf(), cin.unsetf(),


cout.unsetf() fggvnyek paramtereknt kell felsorolni a | jellel elvlasztva.. A setf()
belltja, az unsetf() kikapcsolja ket, a kett kztt rvnyben vannak. Nmelyikk
alaprtelmezett mdon be van kapcsolva. Minden flag el az ios:: minstst kell rni.
Formtumjelz flagek:
scientific, lebegpontos alak
fixed, fixpontos alak
right, left, jobbra ill. balra tmrts,
dec, hex, oct, szm megjelentsnek szmrendszere
showpoint, showpos eljel ltszdjon-e
Gregorics Tibor Egyszer programok C++ nyelvi elemei 7

skipws elvlaszt jelek tlpse olvasskor


A manipultorok csak az adott adat mozgatsra vonatkoznak. ket a << opertorral kell a
standard kimenetre kldeni.
Manipultorok:
setw(int w), width(int w) mezszlessg megadsa
setprecision(int p), precision(int p) szmbrzols pontossga
setfill(char c) .... kitlt karakter definilsa
endl sorvge

Karakter beolvassa

A >> opertorral egyetlen karaktert is be lehet olvasni, feltve, hogy az nem elvlaszt jel.
Ha elvlaszt jeleket is be szeretnnk olvasni, akkor vagy kikapcsoljuk a whitespace-eket
tugr mechanizmust: cin.unsetf(ios::skipws), vagy a get() fggvnnyel olvasunk.

char ch;
cin.get(ch);
A get() fggvny prja a put(), amivel egyetlen karaktert lehet kirni.

Sor beolvassa

Szkzzel elvlasztott vagy res karakterlncot nem tudunk a >> opertorral beolvasni.
Ilyenkor a beolvassnak msik formjt kell hasznlni:

getline(cin,str);
gyeljnk azonban arra, hogy ha vegyesen hasznljuk a ktfle olvassi mdot, akkor a
getline() alkalmazsa eltt rtsk ki a billentyzet puffert.

sszetett szerkezet tpusok


A tpusszerkezetekkel egyszerbb tpusokbl pthetnk fel sszetett szerkezet tpusokat.

Tmb

A tmb tbb azonos tpus elem trolsra hasznlt adatszerkezet, amelyben megengedett az
adott index elemre val hivatkozs.
A C++ nyelven tbbflekppen is hasznlhatunk tmbket. Ezek nmelyike tl mutat a tmb
hasznlatn, mert olyan mveleteket is megenged (pldul tmbhz j elem hozzfzse vagy
utols elemnek elhagysa), amelyeket egy tmbre nem szoks megengedni.

Fordtsi idben rgztett mret, automatikus helyfoglals egydimenzis tmb (vektor)


int t[100]; // 100 elem tmb
int n; // tnyleges mret: n<=100
cin >> n;
for(int i=0;i<n;++i){ // tmb feltltse
cin >> t[i];
}
Gregorics Tibor Egyszer programok C++ nyelvi elemei 8

Futsi idben rgztett mret, automatikus helyfoglals egydimenzis tmb (vektor)


int n;
cin >> n;
int t[n]; // n elem tmb
for(int i=0;i<n;++i){ // tmb feltltse
cin >> t[i];
}
Futsi idben rgztett mret, dinamikus helyfoglals egydimenzis tmb (vektor)
int* t; // vges mret tmb deklarlsa
int n; // tnyleges mret
cin >> n;
t = new int[n]; // tmb lefoglalsa futs kzben
for(int i=0;i<n;++i){ // tmb feltltse
cin >> t[i];
}
delete[] t; // tmb felszabadtsa

Vltoztathat mret egydimenzis vector<>


int n;
cin >> n;
vector<int> t(n); // tmb deklarlsa a mretvel egytt
t.size() // tmb elemeinek szma
vector<int> t; // vges mret tmb deklarlsa
t.resize(n); // tmb mretnek megvltoztatsa
for(int i=0; i<(int)t.size();++i) // tmb feltltse
cin >> t[i];
}
t.push_back(j); // tmb vgre j elemet illeszt

Fordtsi idben rgztett mret, automatikus helyfoglals ktdimenzis tmb (mtrix)


Elem t[10][20]; // lefoglalt mtrix
int n,m; // tnyleges mret
cin >> n >> m;
for (int i=0;i<n;++i) // t feltltse
for (int j=0;j<m;++j)
cin>>t[i][j];

Futsi idben rgztett mret, automatikus helyfoglals ktdimenzis tmb (mtrix)


int n,m; // mret
cin >> n >> m;
Elem t[n][m]; // lefoglalt mtrix
for (int i=0;i<n;++i) // t feltltse
for (int j=0;j<m;++j)
cin>>t[i][j];

Futsi idben rgztett mret, dinamikus helyfoglals ktdimenzis tmb (mtrix)


Elem** t; // vges mret mtrix
int n,m; // tnyleges mret
cin >> n >> m;
t=new Elem*[n];
Gregorics Tibor Egyszer programok C++ nyelvi elemei 9

for (int i=0;i<n;++i){ // t feltltse


t[i]=new Elem[m];
for (int j=0;j<m;++j) cin>>t[i][j];
}
for (int i=0;i<n;++i) delete[] t[i];
delete[] t; // t felszabadtsa

Vltoztathat mret ktdimenzis vector<vector<> >

t.size() // mtrix sorainak szma


t[0] // mtrix els sora
t[0].size() // els sor elemeinek szma
t[0][0] // els sor els eleme
vector<vector<int> > t; // mtrix deklarlsa
t.resize(n); // mtrix sorai szmnak megvltoztatsa
t[0].resize(m) // sor mretnek megvltoztatsa
for(int i=0;(int)i<t.size();++i) // tglalap mtrix feltltse
for(int j=0;(int)j<t.size();++j)
cin >> t[i][j];

Struktra

A rekord tpusnak megfeleltetett szerkezet:

struct Nev {
tipus1 mezo1;
tipus2 mezo2;
...
};

Nev d;
d.mezo1 = ;
= d.mezo1;
A d.mezo1 kifejezs (a mezo1 a szelektor fggvny) llhat rtkads jobb- illetve
baloldaln. Az egyik esetben felhasznljuk d.mezo1 kifejezs ltal kpviselt rtket, a msik
esetben megvltoztathatjuk azt.

Szveges llomnyok

A szveges llomnyok olyan karakteres llomnyok, amelyekben bizonyos nem lthat


karakterek a szveg trdelsrt felelsek. Ezeket az llomnyokat ktflekppen
hasznlhatjuk: olvassra vagy rsra. Mindkt mvelet sorban, egyms utn trtnik. Nemcsak
karakterenknt, hanem nagyobb szintaktikai egysgenknt is, pldul soronknt, szavanknt,
stb. olvashatunk illetve rhatunk.
Gregorics Tibor Egyszer programok C++ nyelvi elemei 10

Szveges llomny deklarlsa, nyitsa, ellenrzse, zrsa

Az
ifstream f;
ofstream f;
definil egy gynevezett bementi illetve kimeneti adatfolyam objektumot (f az objektum
neve), amelyek segtsgvel a szveges llomny adatait olvashatjuk vagy hozzjuk rhatunk.
Szksgnk van mg az albbi sorra is:

#include <fstream>
Az
f.open(fnev.c_str());
megnyitja az adatfolyamot. Az adatfolyam forrsnak, azaz a szveges llomnynak a nevt
archaikus karakterlnc formban kell megadnunk. Az archaikus karakterlncokrl elg annyit
tudni, hogy egy string tpus vltozban (legyen a neve: str) trolt sztringnek az
str.c_str() adja meg az archaikus alakjt. Az adatfolyam defincija s megnyitsa
sszevonhat egy lpsbe:

ifstream f(fnev.c_str());
ofstream f(fnev.c_str());
Az adatfolyam az

f.close();
utastssal zrhat le, amelyre azonban automatikusan sor kerl akkor, amikor a vezrls elri
az adatfolyam deklarcijt tartalmaz blokk vgt.
Egy adatfolyam megnyitsakor (akr kzvetlenl, akr az open() utastssal trtnik)
klnfle hibk fordulhatnak el. A leggyakoribb az, hogy a megnevezett szveges llomnyt
nem talljuk meg, mert elfelejtettk ltrehozni, vagy nem abban a knyvtrban van, ahol
keressk. A hibra a fail() fggvny lekrdezsvel krdezhetnk r. Hiba esetn
rtesthetjk a felhasznlt a szabvnyos kimentre kldtt zenettel, s egy alkalmas
hibakddal ami nem nulla lelltjuk a program futst: exit(1).

ifstream f(fnev.c_str());
if (f.fail())
{
cout << "Hinyzik az llomny" << endl;
char ch; cin>>ch;
exit(1);
}

Ha egy adatfolyamot egy sikertelen ksrlet utn jra meg akarunk nyitni, akkor elbb az
f.clear() utastst ki kell adnunk.

ifstream f;
string fnev;
bool hiba;
Gregorics Tibor Egyszer programok C++ nyelvi elemei 11

do
{
cout << "Az llomny neve: "; cin >> fnev;
f.open(fnev.c_str());
if(hiba = f.fail()){
cout << "Fjl nyitsi hiba!\n";
f.clear();
}
}while(hiba)

Olvass, rs szveges llomnnyal

Az olvassra, rsra majdnem ugyanazok a szablyok rvnyesek, mint a szabvnyos


bemenetre illetve kimenetre. Lnyeges klnbsg az, hogy itt egy olvass a soron kvetkez
szintaktikai egysgre, azaz elvlaszt jelekkel (szkz, tabultor, sorvge) hatrolt rszre
vonatkozik.
ltalnos formja beolvassnl:

f >> valtozo;
Kirsnl:

f << kifejezes;

Karakterek beolvassa szveges llomnybl

Az
ifstream f;
char df;
f >> df;
olvass alaprtelmezs szerint tlpi az elvlaszt jeleket. Ha az sszes karaktert akarjuk
egyms utn beolvasni, akkor az olvass megkezdse eltt ki kell kapcsolni ezt a
tulajdonsgot. Ehhez az

#include <iomanip>
ifstream f;
f.unsetf(ios::skipws)
vagy a

f.get(df);

kdot kell alkalmazni.


A kirs egyformn mkdik a f<<df illetve az f.put(df) utastssal.

Sorok beolvassa szveges llomnybl

A getline() fggvnnyel lehetsgnk van egy teljes sort, vagy egy megadott elvlaszt
jelig tart karakterlncot beolvasni egy szveges llomnybl. Az albbi kt megolds
egyenrtk: mindkett egy teljes sort olvas, hiszen a sorok vgt a \n sorvge karakter jelzi.
Gregorics Tibor Egyszer programok C++ nyelvi elemei 12

ifstream f( );
string sor;

getline(f, sor);
getline(f, sor, \n );

Egyb nyelvi elemek

Program lelltsa 1-es hibakddal

Az exit(1) utasts hatsra programunk azonnal befejezdik, s az 1-es rtket (hibakdot)


adja vissza a futtatsi krnyezetnek (opercis rendszernek).

Vrakoz utasts

Elegns ltalnos vrakoz utasts nincs a C++-ban. A char ch; cin >> ch; egy
kevsb elegns, de opercis rendszerektl fggetlen vrakoz utasts, amely feloldshoz
nem elg egy <enter> letni, az eltt meg kell adni egy tetszleges karaktert:

char ch; cin >> ch;

Megjegyzsek kdba illesztse

rhatunk egy- illetve tbbsoros megjegyzseket a programkdba, amiket a fordt figyelmen


kvl hagy.
Egy soros megjegyzs esetn: Tbb soros megjegyzs esetn:

/*
// megjegyzs megjegyzs
*/

Sztringek kezelse

Egy sztringre szmos hasznos elredefinilt fggvny hasznlhat.

A find() fggvnycsald (sok vltozata van) egy sztringben keres karaktert vagy rsz-
sztringet, annak sztringbeli pozcijt adja vissza, ha nem tall, akkor a string::npos
extremlis rtket. Lehet a sztring adott pozcijtl kezdden keresni az els vagy az utols
elfordulst.

A sztringet megvltoztat fggvnyek kztt talljuk a karaktert vagy rsz-sztringet adott


pozcira beszr ( insert), adott pozcirl trl (erase), adott pozcin helyettest (replace)
mveleteket.
Hasznos lehetsget rejt a sztringek feldolgozsban a stringstream-ek (#include
<sstream>) alkalmazsa.
Egy input-sztringfolyamba helyezett sztringet gy tudunk feldolgozni, mintha azt egy
szveges llomnybl olvastuk volna:
string str = "Alma a fa alatt";
Gregorics Tibor Egyszer programok C++ nyelvi elemei 13

istringstream is;
is.str(str);
string word;
while(is >> word) { cout << word << endl;}
Az output-sztringfolyam segtsgvel tetszleges sztring llthat ssze gy, hogy kzben a
sztringbe fztt adatelemek konverzijra is sor kerl:
ostringstream os;
os << "A " << 3.2 << " egy vals szm ";
str = os.str();
cout << str << endl;

You might also like