我想用我的MFC应用程序写入std::cerr
或std::cout
。在python脚本中,我调用此应用程序,我想阅读stdout
或stderr
。
两者都不起作用。仅使用std::cout
不会产生任何输出。在AllocConsole()
之后,我至少能够打印到调试控制台。不幸的是,python网站上仍然没有输出。
在我的MFC应用程序中,我使用以下代码初始化控制台以写入:
void BindStdHandlesToConsole()
{
// Redirect the CRT standard input, output, and error handles to the console
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
std::wcout.clear();
std::cout.clear();
std::wcerr.clear();
std::cerr.clear();
std::wcin.clear();
std::cin.clear();
}
// initialization
BOOL foo::InitInstance()
{
// allocate a console
if (!AllocConsole())
AfxMessageBox("Failed to create the console!", MB_ICONEXCLAMATION);
else
BindStdHandlesToConsole();
在python站点上,我尝试打印输出。
process = subprocess.Popen(args,stdout=subprocess.PIPE,shell=True)
output = process.stdout.read()
process.wait()
有没有办法让我的MFC程序真正写入并且python脚本读取标准输出?
答案 0 :(得分:0)
将内容写入stdout管道的正确方法如下:
for (SettlementReportNB showSellementReport: settlementReportList) {
boolean notPresent = false;
String merchantTxnId = null;
String merchantreferencenumber = showSellementReport.getMerchantreferencenumber();
for (AllTransactions showAllTransaction: allTransactionsList) {
merchantTxnId = showAllTransaction.getMerchantTxnId();
if (merchantreferencenumber.equals(merchantTxnId)) {
notPresent = false;
break; // get out of loop because it already exists
} else {
notPresent = true;
}
}
if (notPresent) idNotFound.add(merchantTxnId);
}