2013-03-10 79 views
1

我正在通过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);函数正在传递引用,但是流中的哪个字符被返回? c的初始值是多少?

+2

局部变量的初始值未定义,它可以是任何形式 – camino 2013-03-10 03:18:22

回答

1

c的初始值未定义,但的初始值是什么也没有关系,因为get的调用将设置该值。由于在||&&运营商的左侧之后有一个sequence point,我们知道所有side effectsget已经生效,并且endofline将看到修改后的值c

+0

因此'c'被设置为流中的第一个字符。谢谢。 – Brian 2013-03-10 04:18:47