Reputation: 452
I'm reading over a C++ class for parsing CSV files in one of my programming books for class. I primarily write in C# for work and don't interact with C++ code very often. One of the functions, getline, uses an uninitialized char variable and I'm confused as to whether it's a typo or not.
// getline: get one line, grow as needed
int Csv::getline(string& str)
{
char c;
for (line = ""; fin.get(c) && !endofline(c); )
line += c;
split();
str = line;
return !fin.eof();
}
fin
is an istream. The documentation I'm reading shows the get (char& c);
function being passed a reference, but which char in the stream is returned? What's the initial value of c
?
Upvotes: 1
Views: 1632
Reputation: 158469
The initial value of c
is undefined but it does not matter what the initial value of c
is since the call to get
will set the value. Since there is a sequence point after the left hand side of the ||
and &&
operators we know that all the side effects of get
will have been effected and endofline
will see the modified value of c
.
Upvotes: 1