【发布时间】:2015-03-25 19:00:24
【问题描述】:
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怎么改呢?
我想这里有一些我不明白的明显东西?
【问题讨论】:
-
在 C++ 中,有参考。这就是如何。如果您通过非
const引用传递参数,则可以对其进行修改。 (本质上,大多数编译器将生成相同的机器代码,就好像对象是按指针传递的一样。) -
我投票结束这个问题,因为它缺乏关于所使用语言的基本知识。
-
至少可以看看
get的签名。 -
我不知道参考资料。我只学过 C,而且我最近才转到 C++,没有经过任何正规培训。当我看到“&”时,它对我来说意味着内存地址......签名是什么?
-
@TheParamagneticCroissant 是的,我是菜鸟。我做了我的研究,但有时作为一个菜鸟意味着你不知道你在寻找什么。我去看了函数的文档,因为我看到 & 字符假设我应该传递某种指针,但它只有在我传递变量时才会起作用,我很困惑。现在我知道我必须了解“参考”,答案很明显。我应该使用不同的论坛来问我的菜鸟问题吗?我认为堆栈溢出也适合像我这样的菜鸟,试图礼貌地向有知识的人提问。对不起!