Wiem że cin>> psuje każdy kolejny getline występujący w kodzie, i że należy po takim cin'ie wpisać po prostu cin.ignore(), ale co jeżeli w kodzie mam dwa getline'y po sobie i chce aby prawidłowo wpisywały dane, co więcej, żebym mógł je rozdzielać spacją, a nie enterem. Gdy je rozdzielam spacją, wpisywane dane się mieszają. Napotkałem się na ten problem pisząc algorytm wypisujący na zmianę elementy z dwóch tablic.
Chciałbym, abym zamiast pisać w konsoli:
abc
def
mógł napisać
abc def
i aby w obu przypadkach wyświetliło się adbecf ( a wyświetla się tak tylko w pierwszym przypadku )
Mój kod:
#include <iostream>
using namespace std;
char string_merge(char x[],char y[])
{
int i=0;
int k=0;
int ile=0;
char z[200];
while ((x[i]!=0) && (y[i]!=0))
{
z[k]=x[i];
z[k+1]=y[i];
i++;
k=k+2;
ile++;
}
for(int c=0;c<ile*2;c++)
{
cout<<z[c];
}
}
int main()
{
string eh1,eh2,eh3;
int t;
cin>>t;
cin.ignore();
for(int k=0;k<t;k++)
{
char x[100];
char y[100];
cin.getline(x,100);
cin.getline(y,100);
string_merge(x,y);
cout<<endl;
}
return 0;
}