C++ 如何重定向stdout和stderr流(多平台)?
我正在编写使用外部libs的GL应用程序,它将错误打印到控制台。我想捕捉它并在游戏机中打印C++ 如何重定向stdout和stderr流(多平台)?,c++,console-application,stdout,stderr,multiplatform,C++,Console Application,Stdout,Stderr,Multiplatform,我正在编写使用外部libs的GL应用程序,它将错误打印到控制台。我想捕捉它并在游戏机中打印 PS:对不起,我的英语不好……有两种基本方法可以解决这个问题: 如果库都使用std::cout作为要捕获的IO,则可以。然后可以调用std::cout.rdbuf(mybufinst)替换streambuffer,例如使用std::basic\u stringbuf: #include <sstream> #include <iostream> int main() { s
PS:对不起,我的英语不好……有两种基本方法可以解决这个问题:
std::cout
作为要捕获的IO,则可以。然后可以调用std::cout.rdbuf(mybufinst)替换streambuffer,例如使用std::basic\u stringbuf
:
#include <sstream>
#include <iostream>
int main() {
static std::basic_stringbuf<std::ostream::char_type> buf;
std::cout.rdbuf(&buf);
std::cout << "Hello captured world!\n";
std::cerr << "Stole: " << buf.str() << std::endl;
}
#包括
#包括
int main(){
静态标准::基本字符串buf buf;
标准::cout.rdbuf(&buf);
标准::cout