gpt4 book ai didi

c++ - 如何将字符串中的数据放入cin

转载 作者:太空狗 更新时间:2023-10-29 20:05:15 24 4
gpt4 key购买 nike

我需要为非我编写的小型学习程序编写测试(使用谷歌测试框架)。 (它只是一个小型控制台游戏,可以从命令行获取模式或只是在运行时获取它)有一个问题:我无法更改源代码,但几乎所有方法都使用了 cout 和 cin。我的问题是“如何在测试时回答程序的请求 (cin)(比如从字符串中获取 cin 的数据)?”。

最佳答案

假设您可以控制 main()(或在要测试的函数之前调用的其他函数),您可以更改 std::cin 从何处读取以及从何处读取 std::cout 写入:

int main(int ac, char* av[]) {
std::streambuf* orig = std::cin.rdbuf();
std::istringstream input("whatever");
std::cin.rdbuf(input.rdbuf());
// tests go here
std::cin.rdbuf(orig);
}

(同样适用于 std::cout)

此示例保存了 std::cin 的原始流缓冲区,因此可以在离开 main() 之前替换它。然后它设置 std::cin 以从字符串流中读取。它也可以是任何其他流缓冲区。

关于c++ - 如何将字符串中的数据放入cin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14550187/

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