【发布时间】:2017-06-27 00:36:02
【问题描述】:
我以前做过,但已经有一段时间了,我在查找任何相关示例时遇到了问题。我有这个遗留代码:
namespace LegacyUtil {
public ref class Calc
{
public:
static int Combos(int s)
{
int t = 0;
// bunch of irrelevant loops
printf("%c%d %c%d D%d\n", m, b, a, d, z);
t++;
return t;
}
};
}
注意:如果需要,我可以在 Visual C++ 中编辑/重新编译它,但我必须至少跳过一圈。
我的问题:如何从我的 C# 代码中捕获对 printf() 的 C++ 调用的输出?我有这个代码:
int test = LegacyUtil.Calc.Combos(1040);
执行成功,但我只得到返回的整数,我想要字符串输出。请帮忙!
【问题讨论】:
-
你试过了吗:
std::stringstream,snprintf? -
@ThomasMatthews 根本没有尝试修改遗留代码,并希望无需修改此代码即可捕获输出
-
您要返回
Combos中的哪些值? -
@EvanWeissburg 你看到对 printf() 的调用了吗?当前输出一个长度为 11 个字符的字符串,末尾有一个换行符。它在一个循环中执行了数百次,我需要 C# 才能访问该字符串
-
可以用 fprinf 代替 printf 吗?因为 fprintf 会将输出重定向到一个文件,所以您可以读取该文件以获取输出。