I see Cubbi's point. If you have no white-space after your last entry, then it would appear okay, because after the last read, EOF would have been encountered. If you do have an extra carriage return for example, the stream will still be good() after your last data entry, and your program's behaviour will not be as intended.

Perhaps, instead of checking inData.good() as the loop condition, and then modifying the stream by reading from it in your loop body, use your inData >> currentSong as the loop condition. Remember, >> will return inData, which can be used as a boolean, thereby accomplishing the good() check you're trying.