【发布时间】:2018-09-15 09:31:24
【问题描述】:
我有很多用 C 语言编写的第三方函数,它们的输入来自 stdin 到 scanf()。我已经用 C++ 编写了其他调用 c 函数的函数。现在,我正在准备测试,我想用 C++ 字符串编写输入测试用例。
所以我的问题是,是否有一种方法可以表达stdin 应该从 C++ 字符串而不是标准输入中读取?如果我实现了这一点,那么我可以编写几个输入是 c++ 字符串的测试用例,并且我的 C++ 函数会被透明地调用,这些函数调用 c 函数并期望它们的输入来自 stdin。
【问题讨论】:
-
嗯,你可以从文件重定向输入。
-
No.freopen?先看看如何从字符串生成文件... -
如果您可以用 C++ 重写 C 函数,请将它们编写为接受
std::istream &类型的参数。istream有多种类型(ifstream从文件中读取,istringstream从字符串中读取,等等)。测试函数所需要做的就是提供一个已适当初始化的适当类型的实例。一般来说,从stdin读取的 C 函数不能被强制从标准 C++ 中的字符串读取。 -
有
c_str。上面的第二个相关链接仅适用于 Linux(POSIX?),但这可能是您需要的。