1

我正在阅读我的一本编程书籍中用于解析 CSV 文件的 C++ 类。我主要用 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多少?

4

1 回答 1

1

的初始值c是未定义的,但它的初始值是什么并不重要,c因为调用get将设置该值。由于and运算符的左侧后面有一个序列点,我们知道 will 的所有副作用都已生效,并且将看到 的修改值。||&&getendoflinec

于 2013-03-10T03:19:00.163 回答