gpt4 book ai didi

c++ - 将字符串注入(inject) 'cin'

转载 作者:IT老高 更新时间:2023-10-28 23:12:33 26 4
gpt4 key购买 nike

我有一个从 std::cin 读取用户输入的函数,我想编写一个单元测试,将一些字符串插入到 std::cin 中,以便以后从 std::cin 中提取将读取该字符串而不是暂停用于键盘输入。

理想情况下,我会更改函数签名,以便可以将自定义 istream 作为参数传递,但我不能在这里这样做,因为我有一个无法更改的固定接口(interface)。

cin.putback() 是我想要的几乎,但是它一次只插入一个字符,并且以相反的顺序插入它们(但我在某处读到放回字符最初并不存在可能是危险的,尽管该网站没有详细说明原因)。我尝试了几种方法将字符串注入(inject) cin 的内部缓冲区 cin.rdbuf(),但也没有一种方法可以工作。我也考虑过使用外部测试脚本或创建子进程,但是我想首先考虑用纯 C++ 进行测试。

那么,有什么方法可以将字符串放入 cin 中吗?或者你知道注入(inject)我的“假键盘输入”的更好方法吗?

最佳答案

你可以让你的程序接受一个通用的std::istream&,而不是乱搞cin。正常运行时,传入cin即可。在单元测试期间,将您自己创建的 I/O 流传递给它。

关于c++ - 将字符串注入(inject) 'cin',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3797280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com