ifstream 函数"get"如何改变其字符参数?

How does the ifstream function "get" alters its character argument?

本文关键字:字符 参数 改变 get 函数 何改变 ifstream      更新时间:2023-10-16

ifstream的函数get读取下一个字符,并将其存储在传递给函数的参数中。示例程序:

#include <iostream>     
#include <fstream>      
int main () {
  std::ifstream is("input.txt");     // open file
  char c;
  while (is.get(c))          // loop getting single characters
    std::cout << c;
  is.close();                // close file
  return 0;
 }

这很好,但我对函数get如何更改c感到困惑,因为它不是通过指针传递的。不久前,有人告诉我,在函数内修改变量不能改变函数外的值。这就是指针的全部用途,对吧——操作在函数之外创建的对象。那么如何在这里更改c呢?

我想这里有一些明显的我不明白的地方?

成员函数std::istream::get()使用引用:

istream& get (char& c);

这意味着函数直接访问作为参数传递的变量。

如果您不熟悉参考资料,可以在这里了解更多信息。

"那么如何在此处更改c?"

根据参考文件,std::ifstream::get()char变量使用参考传递的参数

 basic_istream& get( char_type& ch );

所以它通过使用这个引用来改变它。