Elmélet:
Megtanulandó függvények:
insert
replace
append
find
transform
Laborfeladatok:
1. Írjunk egy programot, amely beolvas egy str1 stringet, majd egy str2 stringet.
Ezután beolvas egy pos változót, majd az str2 stringet beilleszti a pos helyre az str1 stringben.
4. Írjunk egy programot, amely beolvas két stringet, majd kiírja azt az indexet, ahol a
második előfordul az elsőben. Ha nem fordul elő, akkor a "nincs benne" szöveget írja ki.
6. Írjunk programot, mely egy beolvasott string minden egyes "m"
mássalhangzóját kicseréli "mpm"-re.
Pluszfeladat:
1. Írjunk egy programot, amely beolvas két stringet, s1, s s2-t. S1
tetszőlegesen hosszú, s2 mindig 2 karakterből áll. Majd az összes
helyen, ahol s2 előfordul az s1 ben,
alakítsuk át az s1 ben a két karaktert nagybetűre.
Tipp: Ha egy stringet nagybetűssé szeretnénk alakítani, használhatjuk a transform függvényt a toupper rel. Ha pl s1 stringet szeretném nagybetűssé tenni, akkor
transform(s1.begin(),s1.end(),s1.begin(), ::toupper);
t használok. A
transform használatához szükség van az algorithm könyvtárra.
Megoldott laborfeladatok:
1. Írjunk egy programot, amely beolvas két stringet, s kiírja, hogy a
második hányszor fordul elő az elsőben.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1, s2;
cout << "kerem a beolvasando stringet ";
getline(cin, s1);
cout << "Kerem a keresendo stringet";
cin >> s2;
int elofordul = 0;
size_t hely;
//megkeresi az elso helyet, ahol az s2 string elofordul
hely = s1.find(s2);
// ha a string megvan benne, akkor noveljuk az elofordul valtozot
if (hely != string::npos)
{
elofordul++;
}
//ciklusosan ismeteljuk a fenti utasitasokat, vigyazva arra, hogy mindig
//az elozo hely utan talalt helyen keressuk a keresendo stringet
while(hely!=string::npos)
{
hely= s1.find(s2, hely+1);
if (hely != string::npos)
{
elofordul++;
}
}
cout << elofordul << endl;
return 0;
}
2. Írjunk egy programot, amely beolvas egy stringet, s kicseréli az
összes "a" karaktert "A" ra.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1, s2;
cout << "kerem a beolvasando stringet ";
getline(cin, s1);
int elofordul = 0;
size_t hely;
//megkeresi az elso helyet, ahol az "a" karakter elofordul
hely = s1.find("a");
// ha a karakter megvan benne, akkor csereljuk ki A ra
if (hely != string::npos)
{
s1.replace(hely, 1, "A");
}
//ciklusosan ismeteljuk a fenti utasitasokat,
//vigyazva arra, hogy mindig a mar talalt hely utan keressuk a keresendo karaktert
while(hely!=string::npos)
{
hely= s1.find("a", hely+1);
if (hely != string::npos)
{
s1.replace(hely, 1, "A");
}
}
cout << s1 << endl;
return 0;
}