Problem med cin & string
Hej, endnu en nybegynder savner hjælp :)Jeg håber der er nogen der kan hjælpe mig med dette "problem", nedenstående kode er klippet ud af et større prg, idet det er her jeg har problemmet, det er ikke selve koden jeg har problemmer med, men jeg er ny i C++ og undre mig over hvorfor jeg ikke kan få nedenstående til at virke.
//-----------------
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cout<<"Indtast 1.string : ";
cin>>str;
cout<<"1.string er : "<<str<<endl;
string str2;
cout<<"Indtast 2.string : ";
getline(cin, str2);
cout<<"2. string er : "<<str2<<endl;
return 0;
}
//--------------------
Problemmet er i al sin enkethed at så snart jeg har indtastet noget i den første streng (str) hoppes der over min getline (str2), som om min "enter" efter 1.indtastning ligger i en buffer el.lign.
Mit output ser således ud når jeg eksekvere ovenstående kode :
Indtast 1.string : Test
1.string er : Test
Indtast 2.string : 2. string er :
Hvis man f.eks. skriver "Test forsøg" i "indtast 1.string :" får man flg. output :
Indtast 1.string : Test forsøg
1.string er : Test
Indtast 2.string : 2. string er : forsøg
Jeg er klar over at cin kun indlæser til førstkommende " " (Space), men det virker som om resten af det indtastede står i en buffer og automatisk bliver "puttet" ind i 2.string (uden brugeren har nogen chance for indtastning)
Hvis jeg ændre koden, så der kun skal indtastes EN karakter (ændre "string str" til "char str")
int main()
{
char str;
cout<<"Indtast EN karakter : ";
cin>>str;
cout<<"Karakteren er : "<<str<<endl;
string str2;
cout<<"Indtast 2.string : ";
getline(cin, str2);
cout<<"2. string er : "<<str2<<endl;
return 0;
}
får jeg samme resultat, Output :
Indtast EN karakter : a
Karakteren er : a
Indtast 2.string : 2. string er :
Igen bliver der "sprunget over" min "getline...."
Jeg håber der er nogen der kan gennemskue hvad jeg gør forkert, fordi jeg kan ikke ;-)
Jeg har brugt ovenstående kode i både Dev-c++ 4.01 & Dev-c++ 5 beta, med samme resultat.
På forhånd tak for svar ;-)