Redirect both cout and stdout to a string in C++ for Unit Testing

前端 未结 4 1303
一个人的身影
一个人的身影 2020-12-03 02:49

I\'m working on getting some legacy code under unit tests and sometimes the only way to sense an existing program behavior is from the console output.

I see lots of

4条回答
  •  心在旅途
    2020-12-03 03:22

    This may be an alternative:

    char bigOutBuf[8192];
    char savBuf[8192];
    
    fflush(stdout);
    setvbuf(stdout,bigOutBuf,IOFBF,8192);//stdout uses your buffer
    
    //after each operation
    strncpy(savBuf,bigOutBuf,8192);//won't flush until full or fflush called
    
    //...
    
    //at long last finished
    setbuf(stdout,NULL);//reset to unnamed buffer
    

    This just intercepts the buffered output, so still goes to console or wherever.

    Hope this helps.

提交回复
热议问题