使用迭代器读取输入时C++的sin_start(cin)是否为标准内置函数
问题解答
sin_start不是C++标准库定义的函数,它是你自行定义的istream_iterator<int>类型的变量名,你可以随意修改为其他合法变量名,不会影响功能。
你写的istream_iterator<int> sin_start(cin);是标准的C++对象定义语句,各部分含义如下:
istream_iterator<int>是C++标准库<iterator>头文件提供的模板类,属于输入流迭代器,指定模板参数为int代表该迭代器每次从关联流中读取int类型的数据sin_start是你给这个迭代器对象声明的变量名,不属于标准库预设名称- 括号内的
cin是传入迭代器构造函数的参数,代表将该迭代器绑定到标准输入流上
你的代码可以正常编译运行的原因是你仅完成了迭代器的定义,没有触发实际的输入读取操作,执行后只会输出提示文本就结束程序。如果需要通过该迭代器读取输入,可配合尾后迭代器实现,示例如下:
#include <iostream> #include <iterator> using namespace std; int main() { cout << "Enter integers: "; istream_iterator<int> sin_start(cin); istream_iterator<int> sin_end; // 无参构造得到输入流迭代器的尾后标记 while (sin_start != sin_end) { cout << "读取到的值:" << *sin_start++ << endl; } return 0; }
内容的提问来源于stack exchange,提问作者Juan
相关产品推荐
相关产品推荐

