重定向函数输出到/dev/null
Redirecting function output to /dev/null
我正在使用一个库,它正在向cout
或cerr
打印警告消息。我不希望这个警告消息到达我的程序的输出。我如何捕获这个输出并将其放入/dev/null
或类似的?
兆瓦:
#include <iostream>
void foo()
{
std::cout << "Boring message. " << std::endl;
};
int main()
{
foo();
std::cout << "Interesting message." << std::endl;
return 0;
}
输出应该是:
Interesting message.
我应该如何修改main
以获得所需的输出?(foo
不能更改)
我尝试使用freopen()
和fclose(stdout)
在这个问题中建议我如何重定向标准输出到一些可见的显示在Windows应用程序?结果是什么都不打印。
我可以建议一个hack吗?在使用标准库函数之前,在相关流上设置一个坏/失败位
#include <iostream>
void foo()
{
std::cout << "Boring message. " << std::endl;
}
int main()
{
std::cout.setstate(std::ios::failbit) ;
foo();
std::cout.clear() ;
std::cout << "Interesting message." << std::endl;
return 0;
}
如果你确定事情不会重定向输出(例如到/dev/tty/
,这将是标准的)(我不认为),你可以在调用它们之前重定向。
#include <iostream>
#include <sstream>
void foobar() { std::cout << "foobar!nfrob!!"; }
int main () {
using namespace std;
streambuf *old = cout.rdbuf(); // <-- save
stringstream ss;
cout.rdbuf (ss.rdbuf()); // <-- redirect
foobar(); // <-- call
cout.rdbuf (old); // <-- restore
// test
cout << "[[" << ss.str() << "]]" << endl;
}
使用ios::rdbuf:
#include <iostream>
void foo()
{
std::cout << "Boring message. " << std::endl;
}
int main()
{
ofstream file("/dev/null");
//save cout stream buffer
streambuf* strm_buffer = cout.rdbuf();
// redirect cout to /dev/null
cout.rdbuf(file.rdbuf());
foo();
// restore cout stream buffer
cout.rdbuf (strm_buffer);
std::cout << "Interesting message." << std::endl;
return 0;
}
相关文章:
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 如何在 c++ 中'NULL'字符串
- c++使用foreach使数组为null
- 当使用通配符和null指针调用函数时,对输出的说明
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 检查字符串是否"null" C++
- fopen 在 gdb 中返回 NULL
- what(): basic_string::_M_construct null not valid
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 如何将 stderr 重定向到 /dev/null
- 如何检测 ofstream 是否正在写入 /dev/null
- 管道到 /dev/null 时出现未指定的iostream_category错误(iOS::badbit 问题?
- 重定向函数输出到/dev/null
- "- < /dev/null"在"gcc -dM -E - < /dev/null"中是什么意思?
- 如何在c++和linux中将std::ostream重定向到文件或/dev/null
- 在 c++ 中独立于平台的 /dev/null
- 为什么重定向wcout/wcerr到/dev/null会导致程序崩溃?