我正在研究https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp10_IO.html中的I / O,内容为:
要执行输入和输出,请使用C ++程序:
1:构造一个流对象。
2:将流对象连接(关联)到实际的IO设备(例如,键盘,控制台,文件,网络,另一个程序)。
现在尝试这个,我创建了一个基本程序:
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int i;
std::streambuf *obj;
obj=cin.rdbuf();
std::istream s_obj(obj);
s_obj>>i;
cout<<i<<endl;
return 0;
}
我想自己创建与cin/cout
相同的东西,并且上面的程序可以正常工作。我想了解:
我没有将流对象s_obj
连接到任何 IO 设备,而是将其连接到istream
的缓冲区,即使我可以正确提供输入-怎么样?缓冲区如何管理以从控制台获取输入-我需要为此担心吗?
如果我直接将cin
的缓冲区分配给s_obj
,则会产生错误(由于我是C ++的新手,所以我不能很好理解)。就像在上面的示例中所做的那样完成,或者像std::istream s_obj(cin.rdbuf())
一样完成了,但是工作正常-有什么区别,即使在初始化其他变量时,直接初始化和复制初始化都可以正常工作。