我不知道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;
}
答案 0 :(得分:2)
来自here:
读取一个字符并返回(如果可用)。否则,返回
Traits::eof()
....
当读取失败时,不带参数的重载将返回EOF。其他重载不会影响传递的参数,只是将流置于失败状态(第一次重载也会这样做)。由于您从不检查流的状态,因此您的循环将永远持续。
您可以将循环更改为while (File.get(ch))
,它会在到达文件末尾时终止。
答案 1 :(得分:-2)
get()是一个函数,它返回一个必须使用equals(赋值)运算符赋值的整数。
istream是一个类,它有一个名为get()的方法,它接受一个参数&amp; c,并在其中放置一个字符。
他们不是相同的get()但做类似的事情
服务的功能方式更快,但是如果你想学习面向对象的服务方式使用类方式,当你有经验时,你可以决定哪种方式适合手头的任务。