Cześć!
Znalazłem masę artykułów nawet na forach (na przykład: http://forum.pasja-informatyki.pl/202869/c-cin-getline-omija-pierwszy-lancuch?show=202869#q202869), ale jak w temacie, u mnie funkcja cin.ignore nie bardzo chce działać.
Problem -> pominięcie pierwszego łańcucha (1. ciąg znaków do spacji).
No i prośba o wytłumaczenie dlaczego cin.ignore() w moim przypadku nie działa :)
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <cstring>
using namespace std;
char randomChar()
{
static char const letters[] = "abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return letters[rand() % (sizeof(letters) - 1)];
}
int main()
{
string fraza;
cout<<"Wpisz wybrany przez Ciebie tekst: "<<endl;
cin.ignore();
cin>>fraza;
getline (cin,fraza);
cout<<"Najpierw rozdziele fraze na pojedyncze wyrazy, potem je pomieszam."<<endl;
cout <<"wlasnie napisales: "<< fraza <<endl;
string korektor = " ,.-!:;";
char* schowek;
char *cosnowego = new char[fraza.length() + 1];
strcpy(cosnowego, fraza.c_str());
cout<<"Rozdziela tekst: ->"<<fraza<<"<- na poszczegolne wyarzy: "<<endl;
schowek = strtok( cosnowego, korektor.c_str() );
while( schowek != NULL )
{
cout<<schowek<<endl;
cout<<"wyraz ma: "<<strlen(schowek)<<" znakow."<<endl;
srand(time(NULL));
schowek[0]=randomChar();
cout<<schowek[0];
cout<<schowek[1];
for (int i = 2; i < strlen(schowek)-2; ++i)
{
cout << randomChar();
}
cout<<schowek[strlen(schowek)-2];
for (int i = strlen(schowek)-1; i < strlen(schowek); ++i)
{
cout << randomChar();
}
cout<<endl;
schowek = strtok( NULL, korektor.c_str() );
}
return 0;
}