C++ 函数int get()和istream&;之间有什么不同;获取(字符和c)

C++ 函数int get()和istream&;之间有什么不同;获取(字符和c),c++,C++,我不知道函数int get()和istream&get(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

我不知道函数int get()和istream&get(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;
}
fstream文件(“input.txt”,ios::in | ios::out);
char ch;
而(1)
{
File.get(ch);
//ch=File.get();
cout来自:

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

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

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

来自:

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

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

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

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

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

他们不是同一个get(),而是做相似的事情

函数方式的处理速度更快,但如果您想学习面向对象的处理方式,请使用类方式,当您在这两方面都有经验时,您可以决定哪种方式适合手头的任务。

get()是一个返回整数的函数,必须使用equals(赋值)进行赋值接线员

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

他们不是同一个get(),而是做相似的事情


函数式做事更快,但如果你想学习面向对象的做事方式,请使用类方式,当你对这两种方式都有经验时,你可以决定哪种方式适合手头的任务。

它们都是
basic\u istream
get
的重载。这并不能回答为什么要这样做的问题E重载导致无限循环,另一方面,运算符重载是函数,C++不是OOP语言,它是支持OOP的多范式语言。多范式可以使用函数或类方法实现事物。IO函数在STDIO h中定义,而IO类方法在STRE中定义。am.h(#包括)它本身包括STDIO。H,由于没有包含流,C++函数是可用的。它们都是<代码> > Geult>代码> > Basic IsReRAM< <代码>。这不回答为什么一个重载导致无限循环,另一个则没有。此外,操作符重载是函数,C++不是OOP语言,它是一种支持面向对象编程的多范式语言。多范式可以使用函数或类方法实现。io函数在stdio.h中定义,而io类方法在stream.h中定义(#include)它本身包括stdio.h,因为没有包含流,只有C函数可用。对不起!我无法理解你的答案。你能再解释清楚一次吗?
File.get(ch)
在到达EOF时不会将
ch
设置为任何值,它只是更改
文件中的一些变量
将在结束时返回EOF,除了更改这些变量。抱歉!我无法理解您的答案。您能再解释清楚一次吗?
File.get(ch)
在到达EOF时不会将
ch
设置为任何值,它只是更改
文件中的一些变量
将在结束时返回EOF,并更改这些变量。