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

标签 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

最佳答案

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

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

但是无论您是否重新绑定(bind)流,您都会为这些缺点付出代价。

关于c++ - 从 ifstream 读取 stdin/cin 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22004027/

相关文章:

c++ - 关于智能指针中解引用和成员选择运算符的定义

c++ - 未解析的外部符号 : LNK 2001

c++ - 从 .txt 文件中读取一行并插入到变量中

c++ - 与解析相关的 token 到底是什么

C++从单词的开头删除非字母字符

c++ - OpenGL以像素为单位定义顶点位置

perl - 如何重新初始化 Perl 的 STDIN/STDOUT/STDERR?

linux - bash |管道到 bash 函数

input - 如何使用动态字符值读取 Rust 中的标准输入键?

c++ - 按值将项目插入 vector 与 unique_ptr