ifstream 函数 "get" 如何改变其字符参数?
How does the ifstream function "get" alters its character argument?
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这里怎么改呢?
我想这里有明显的地方我不明白?
成员函数std::istream::get()
使用引用:
istream& get (char& c);
这意味着函数直接访问作为参数传递的变量。
如果您不熟悉参考文献,here您可以了解更多信息。
"So how can c
be changed here?"
从 reference documentation 开始 std::ifstream::get()
使用通过引用传递给 char
变量的参数
basic_istream& get( char_type& ch );
所以它通过使用这个引用来改变它。
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这里怎么改呢?
我想这里有明显的地方我不明白?
成员函数std::istream::get()
使用引用:
istream& get (char& c);
这意味着函数直接访问作为参数传递的变量。
如果您不熟悉参考文献,here您可以了解更多信息。
"So how can
c
be changed here?"
从 reference documentation 开始 std::ifstream::get()
使用通过引用传递给 char
变量的参数
basic_istream& get( char_type& ch );
所以它通过使用这个引用来改变它。