我正在阅读一个C ++类,用于解析我的一本编程书籍中的CSV文件。我主要用C#编写工作,不经常与C ++代码交互。其中一个函数getline使用了一个未初始化的char变量,我对它是否是拼写错误感到困惑。
// 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
是一个istream。我正在阅读的文档显示get (char& c);
函数传递了一个引用,但是返回了流中的哪个char? c
的初始值是多少?
答案 0 :(得分:1)
c
的初始值未定义,但c
的初始值是什么并不重要,因为对get
的调用将设置该值。由于||
和&&
运算符的左侧后面有sequence point,我们知道get
的所有side effects都已生效,{ {1}}会看到修改后的endofline
。