ifstream函数如何“获取”改变其角色参数?

时间:2015-03-25 19:00:24

标签: c++ pointers ifstream

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;
 }

这很好但我很困惑 c 如何通过函数 get 来改变,因为它没有通过它的指针传递。不久前我被告知,修改函数中的变量不能在函数外部改变它的值。这就是指针的全部目的,正确 - 操纵在函数外部创建的对象。那么如何在这里更改 c

我想这里有一些我不明白的东西?

2 个答案:

答案 0 :(得分:2)

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

istream& get (char& c);

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

如果您不熟悉参考文献here,您可以了解更多信息。

答案 1 :(得分:1)

  

“那么如何在此处更改c?”

reference documentation std::ifstream::get()开始,使用char变量引用传递的参数

 basic_istream& get( char_type& ch );

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