【发布时间】:2011-04-17 08:55:36
【问题描述】:
我有一个从 std::cin 读取用户输入的函数,我想编写一个单元测试,将一些字符串插入到 std::cin 中,以便以后从 std::cin 提取将读取该字符串而不是暂停用于键盘输入。
理想情况下,我会更改函数签名,以便可以将自定义 istream 作为参数传递,但我不能在这里这样做,因为我有一个无法更改的固定接口。
cin.putback() 是我想要的几乎,但是它一次只插入一个字符,并且它以相反的顺序插入它们(但我在某处读到放回字符最初并不存在可能是危险的,尽管该网站没有详细说明原因)。我尝试了几种方法将字符串注入 cin 的内部缓冲区 cin.rdbuf(),但也没有一种方法可以工作。我也考虑过使用外部测试脚本或创建子进程,但是我想首先考虑用纯 C++ 进行测试。
那么,有什么方法可以将字符串放入 cin 中吗?或者你知道注入我的“假键盘输入”的更好方法吗?
【问题讨论】: