从ifstream读取stdin / cin是否安全?

时间:2014-02-25 03:33:24

标签: c++ stdin ifstream cin istream

我已经读过可以通过更改缓冲区来读取ifstream的cin,但它是否安全?这样做有什么缺点:

file.ios::rdbuf(cin.rdbuf());

感谢

C++: UNIX - defaulting ifstream variable to standard input
iostream - C++: assign cin to an ifstream variable? - Stack Overflow

1 个答案:

答案 0 :(得分:1)

是的,这是安全的,这就是rdbuf函数存在的全部原因。

这也是iostreams狗慢的主要原因之一。 ifstream对象不一定附加到文件。 stringstream对象可能附加到文件。大量的多态性,大量的虚拟调用,没有优化的机会。

但无论你是否重新绑定流,你都要付出代价。