Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何重定向stdout和stderr流(多平台)?_C++_Console Application_Stdout_Stderr_Multiplatform - Fatal编程技术网

C++ 如何重定向stdout和stderr流(多平台)?

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

我正在编写使用外部libs的GL应用程序,它将错误打印到控制台。我想捕捉它并在游戏机中打印


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