2013-03-14 140 views
0

我有用C++編寫的控制檯應用程序。有沒有什麼辦法可以將它的所有輸出stdout收集到字符串/管道/內存數組?使用C++從控制檯應用程序收集stdout輸出

PS。我需要從控制檯應用程序中執行此操作,我需要從中收集stdout。或者換句話說,它是從自己收集的。

+0

你到目前爲止做了什麼? – 2013-03-14 20:32:51

+0

這沒有意義。如果它來自應用程序本身,則已經有輸出,請將它發送到其他地方。要回答實際問題,是的,這是可能的。有一個只記錄標準輸出的應用程序是有道理的,但我沒有得到你要去的地方。 – evanmcdonnal 2013-03-14 20:33:41

+0

如果文件輸出沒問題,你可以使用'freopen()'來做到這一點。看到http://stackoverflow.com/questions/5257509/freopen-equivalent-for-c-streams – jxh 2013-03-14 20:41:41

回答

3

是的。若要將其重定向到一個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"

+0

我的輸出大部分來自C調用'_tprintf(_T(「Some line1 \ n」));'那doesn似乎沒有被你的方法所抓住。任何想法爲什麼? – ahmd0 2013-03-14 21:09:48

相關問題