【问题标题】:Collect stdout output from a console app with C++使用 C++ 从控制台应用程序收集标准输出输出
【发布时间】:2013-03-03 09:46:15
【问题描述】:

我有一个用 C++ 编写的控制台应用程序。有什么方法可以将所有stdout 输出收集到字符串/管道/内存数组?

PS。我需要从我需要从中收集stdout 的控制台应用程序中执行此操作。或者,换句话说,它是从自身收集的。

【问题讨论】:

  • 到目前为止你做了什么?
  • 这没有意义。如果它来自应用程序本身,您已经拥有输出,请将其发送到其他地方。要回答实际问题,是的,这是可能的。拥有一个只记录标准输出的应用是有道理的,但我不明白你的目标。
  • 如果文件输出没问题,你可以使用freopen()来做。见stackoverflow.com/questions/5257509/…

标签: c++ winapi console-application stdout


【解决方案1】:

是的。要将其重定向到string,您可以使用std::stringstream

std::stringstream buffer;
std::streambuf * old = std::cout.rdbuf(buffer.rdbuf());

那么,如果你这样做:

std::cout << "Example output" << std::endl;
std::string text = buffer.str();

您会看到text 现在包含"Example output\n"

【讨论】:

  • 我的输出主要来自对 _tprintf(_T("Some line1\n")); 的类 C 调用,您的方法似乎没有捕捉到这些调用。知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多