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;
}
这很好,但我对函数get如何更改c感到困惑,因为它不是通过指针传递的。不久前,有人告诉我,在函数内修改变量不能改变函数外的值。这就是指针的全部用途,对吧——操作在函数之外创建的对象。那么如何在这里更改c呢?
我想这里有一些明显的我不明白的地方?
成员函数std::istream::get()
使用引用:
istream& get (char& c);
这意味着函数直接访问作为参数传递的变量。
如果您不熟悉参考资料,可以在这里了解更多信息。
"那么如何在此处更改
c
?"
根据参考文件,std::ifstream::get()
为char
变量使用参考传递的参数
basic_istream& get( char_type& ch );
所以它通过使用这个引用来改变它。
相关文章:
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- OpenCL 内核参数中的字符***?
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 如何将常量字符*作为参数传递给LPCSTR参数?
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 如何将从第 2 个字符开始的字符串作为函数中的参数传递以进行递归,并约束数据 tiee 是函数中的字符串?
- 常量字符[] 默认函数参数
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 将文本字符串作为常量字符 * 参数传递会导致代码分析器错误
- C++ 奇怪的字符*参数问题(不兼容的类型)
- 从常量字符*参数中取出索引
- 在C++中将命令行字符参数解析为int并进行错误检查
- 通过c++主字符**参数处理不同字符串编码的正确方法是什么
- ifstream 函数"get"如何改变其字符参数?
- 为什么字符参数在参数中提升为 int
- C++DLL字符参数