#include <iostream>
#include <string>
using namespace std;
void menu();
void zastap(string zdanie);
int main()
{
string zdanie="Marek szuka dziecka";
cout << "Zadanie jest zdanie: " << zdanie << endl;
menu();
int wybor;
cout << "Twoj wybor: "; cin >> wybor;
switch(wybor)
{
case 1:
zastap(zdanie);
break;
}
return 0;
}
void menu()
{
cout<<endl<<"MENU:"<<endl;
cout<<"[1] Zastap dowolne slowo"<<endl;
}
void zastap(string napis)
{
string slowa;
string zamiennik;
cout<<endl<<"Ktore slowa chcesz zastapic: "; getline(cin, slowa);
cout<<endl<<"jakim slowem/slowami chcesz je zastapic: "; cin.ignore(); getline(cin, zamiennik);
size_t pozycja=napis.find(slowa);
int dlugosc=slowa.size();
napis.replace(pozycja, dlugosc, zamiennik);
cout << endl << "Nowo utworzone zdanie: " << napis;
}
Skończyłem 8 i 9 odcinek kursu pana Zelenta i postanowiłem stworzyć taki program używając podprogramów i paru funkcji bilbioteki string.
Problem jest taki, że program nie uznaje (całkowicie omija) to polecenie -
getline(cin, slowa);
i odrazu przechodzi do następnej linijki pobierając linie ze strumienia input do zmiennej zamiennik.
Gdy użyję zamiast dwóch getline opcji cin>>slowa (wtedy mogę wprowadzić tylko jedno) i cin>>zamiennik(również jedno słowo) wszystko działa poprawnie. Chcę jednak aby użytkownik programu mógł wprowadzić więcej niż jedno słowo.
Gdzie leży problem?