0
我有用C++編寫的控制檯應用程序。有沒有什麼辦法可以將它的所有輸出stdout
收集到字符串/管道/內存數組?使用C++從控制檯應用程序收集stdout輸出
PS。我需要從控制檯應用程序中執行此操作,我需要從中收集stdout
。或者換句話說,它是從自己收集的。
我有用C++編寫的控制檯應用程序。有沒有什麼辦法可以將它的所有輸出stdout
收集到字符串/管道/內存數組?使用C++從控制檯應用程序收集stdout輸出
PS。我需要從控制檯應用程序中執行此操作,我需要從中收集stdout
。或者換句話說,它是從自己收集的。
是的。若要將其重定向到一個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"
。
我的輸出大部分來自C調用'_tprintf(_T(「Some line1 \ n」));'那doesn似乎沒有被你的方法所抓住。任何想法爲什麼? – ahmd0 2013-03-14 21:09:48
你到目前爲止做了什麼? – 2013-03-14 20:32:51
這沒有意義。如果它來自應用程序本身,則已經有輸出,請將它發送到其他地方。要回答實際問題,是的,這是可能的。有一個只記錄標準輸出的應用程序是有道理的,但我沒有得到你要去的地方。 – evanmcdonnal 2013-03-14 20:33:41
如果文件輸出沒問題,你可以使用'freopen()'來做到這一點。看到http://stackoverflow.com/questions/5257509/freopen-equivalent-for-c-streams – jxh 2013-03-14 20:41:41