This appears to be the common problem with mixing >> and getline() in the same program. The problem is probably because you call >> on line 53 before you call NewAssignment(), which is where getline() is called. Turns out that >> and getline() don't work the same. One way they differ is that >> can't put spaces in variables and getline() can. The problem is based on the way input is handled in C++. Input in C++ is routinely buffered, meaning the keyboard or other input is stored in an area of memory, called a buffer, and which is probably an array, declared internal to the software. When you hit the enter key the first input method on the stack tries to take information out of the input buffer to store in the variable that you want to use. As you might expect these input methods need some way to know when to stop trying to take information out of the buffer. For >> the signal to stop input is a whitespace character after the first non whitespace char. The terminating whitespace char is left in the buffer and when the next call to >> occurs, >> ignores any leading whitespace characters in the buffer. This is fine as long as all input methods used in the program follow the same protocol. However, getline() doesn't. getline() stops putting input into the variable when it reaches a certain length or when it when it reaches a terminating char. The terminating char can be any legal char, and it defaults to the newline char. Turns out when you push the enter key to signal end of input, call the input method, the enter key is actually interpretted by the program as a new line char. Therefore the call to >> will leave the new line char in the input buffer and when the first call to getline() arrives the first char in the input buffer is the new line char left by the prior call to >> and if the new line char is the terminating char for that call to getline() it assumes there is no information to put in this variable and therefore looks like it skips the variable. By the way getline() removes the terminating char fromt he input buffer. In order to correct this either don't mix calls to input methods that don't deal with the input buffer in the same manner within a given program, or be sure, the best you can, that the input buffer is cleared before you attempt to call getline() and similar input methods that don't ignore leading whitespaces. Usually this is done by placing a call to ignore() after each call to >> or before each call to getline() when you mix the two in the same program. You should send a suitably large int to ignore(), say 1000, although how large ther int should be isn't all that important, usually (some people prefer to use the maximum size of the input buffer, and some people just use some large number).