我经常cout在我的代码中的许多不同位置用于调试目的,然后我感到沮丧并手动评论所有这些.
有没有办法在运行时抑制cout输出?
更重要的是,假设我想要抑制所有cout输出,但我仍然希望在终端中看到1个特定输出(假设程序的最终输出).
是否可以使用""其他方式"打印到终端以显示程序输出,然后在抑制cout仍然看到使用这种"其他方式"打印的东西?
use*_*016 62
当然,你可以(例如这里):
int main() {
    std::cout << "First message" << std::endl;
    std::cout.setstate(std::ios_base::failbit);
    std::cout << "Second message" << std::endl;
    std::cout.clear();
    std::cout << "Last message" << std::endl;
    return 0;
}
输出:
First message
Last message
这是因为将流置于fail状态将使其静默地丢弃任何输出,直到清除failbit.
911*_*911 18
要抑制输出,可以断开底层缓冲区与cout的连接.
#include <iostream>
using namespace std;
int main(){
    // get underlying buffer
    streambuf* orig_buf = cout.rdbuf();
    // set null
    cout.rdbuf(NULL);
    cout << "this will not be displayed." << endl;
    // restore buffer
    cout.rdbuf(orig_buf);
    cout << "this will be dispalyed." << endl;
    return 0;
}
您可以使用cerr- 标准输出流用于调试目的的错误。
此外,还有clog- 用于记录的标准输出流。
通常,它们的行为都类似于cout.
例子:
cerr << 74 << endl;
详情:http : //www.cplusplus.com/reference/iostream/cerr/
http://www.cplusplus.com/reference/iostream/clog/
| 归档时间: | 
 | 
| 查看次数: | 15113 次 | 
| 最近记录: |