函数int get()和istream&之间有什么不同? get(char& c)

时间:2016-02-28 05:56:37

标签: c++

我不知道function int get()和istream&得到(char& c) 我有一些像这样的代码。它是一个无限循环。但是如果我使用 ch = File.get()而不是 File.get(ch),那就没问题。告诉我原因。

fstream File("input.txt", ios::in | ios::out);
char ch;
while (1)
{
    File.get(ch);
    //ch = File.get();
    cout << ch;
    if (ch == EOF) break;
}

2 个答案:

答案 0 :(得分:2)

来自here

  

读取一个字符并返回(如果可用)。否则,返回Traits::eof() ....

当读取失败时,不带参数的重载将返回EOF。其他重载不会影响传递的参数,只是将流置于失败状态(第一次重载也会这样做)。由于您从不检查流的状态,因此您的循环将永远持续。

您可以将循环更改为while (File.get(ch)),它会在到达文件末尾时终止。

答案 1 :(得分:-2)

get()是一个函数,它返回一个必须使用equals(赋值)运算符赋值的整数。

istream是一个类,它有一个名为get()的方法,它接受一个参数&amp; c,并在其中放置一个字符。

他们不是相同的get()但做类似的事情

服务的功能方式更快,但是如果你想学习面向对象的服务方式使用类方式,当你有经验时,你可以决定哪种方式适合手头的任务。