2013-03-10 126 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