1

クラス用のプログラミング本の1つでCSVファイルを解析するためにC++クラスを読んでいます。私は主に仕事のためにC#で記述しており、C++コードと頻繁にやり取りすることはありません。関数の1つである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();
}

finistreamです。私が読んでいるドキュメントにはget (char& c);、参照が渡されている関数が示されていますが、ストリーム内のどの文字が返されますか?の初期値はc何ですか?

4

1 に答える 1

1

の初期値は未定義ですが、 の呼び出しによって値が設定されるため、cの初期値が何であるかは問題ではありません。and演算子の左側の後にシーケンス ポイントがあるため、 のすべての副作用が影響を受け、 の変更された値が表示されることがわかります。cget||&&getendoflinec

于 2013-03-10T03:19:00.163 に答える