Getline problem

Jan 31, 2013 at 3:49am
I'm having a problem with getline making me skip an input part of this program. Run the code and you will feel my pain lol Anyone know how I can fix this??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//Assignment 3
//CPII
//Movie Data

#include <iostream>
#include <string>
using namespace std;

struct MovieData
	{
		string title;     //Declare Struct
		string director;
		int year;
		int length;
	};

    MovieData Movie1;   //Declare MovieData variables
	MovieData Movie2;
	

// getMovieData() stores info in the MovieData object 
void getMovieData(MovieData m , MovieData n);
 // prntMovie() displays the info in the MovieData object 
void prntMovie(MovieData m);

int main()
{
	getMovieData(Movie1 , Movie2);
	prntMovie(Movie1);
	prntMovie(Movie2);
	
}


//function definition for getMoviedata
void getMovieData(MovieData m , MovieData n)
{
	
	cout << "Enter movie title: ";
	getline(cin, Movie1.title);
	cout << endl;

	cout << "Enter director: ";
	getline(cin, Movie1.director);
	cout << endl;

	cout << "Enter the year movie was made: ";
	cin >> Movie1.year;
	cout << endl;

	cout << "Enter the length of the movie in minutes: ";
	cin >> Movie1.length;
	cout << endl;

	
	cout << "Enter movie title: ";
	getline(cin, Movie2.title);
	cin.ignore();
	cout << endl;

	cout << "Enter director: ";
	getline(cin, Movie2.director);
	cin.ignore();
	cout << endl;


	cout << "Enter the year movie was made: ";
	cin >> Movie2.year;
	cout << endl;

	cout << "Enter the length of the movie in minutes: ";
	cin >> Movie2.length;
	cout << endl;

}

//Function definition for prntMovie
void prntMovie(MovieData m)
{
	cout << "Movie Title: " << m.title << endl;
	cout << "Director: " << m.director << endl;
	cout << "Year: " << m.year << endl;
	cout << "Length: " << m.length << endl;
	cout << endl;
}
Last edited on Jan 31, 2013 at 3:50am
Jan 31, 2013 at 3:51am
Where does it skip? I'm guessing at line 57, right?
Jan 31, 2013 at 1:53pm
Yea how did u know?
Jan 31, 2013 at 1:54pm
If i take out the cin.ignore() it acts even crazier
Jan 31, 2013 at 2:18pm
It skips there because when you read in Movie.length on line 52, it doesn't read in the newline character, just the number, so when it gets to line 57 it sucks up that newline character and says thanks for nothing. Try cin.ignore() BEFORE the getlines.
Last edited on Jan 31, 2013 at 2:18pm
Jan 31, 2013 at 2:23pm
Thank You that worked perfectly. And thanks for telling me why that didn't work! I knew it was something small. Again Thank you.
Jan 31, 2013 at 2:33pm
One more question: How come it cuts off the first letter of the second movie director?
Jan 31, 2013 at 2:37pm
On line 57, getline reads in the newline, so you cin.ignore() the next character the user types on line 58.
Jan 31, 2013 at 8:51pm
so how do I fix it?
Jan 31, 2013 at 9:12pm
"Doctor, Doctor! It hurts when I do this!"
"Don't do that."

Essentially, don't cin.ginore() after a getline.
Feb 1, 2013 at 1:56am
HAHA Ahhh I get the drift now. Thank you again!
Topic archived. No new replies allowed.