Android NDK重定向std::cout输出到log
来源:互联网 发布:python is equal 编辑:程序博客网 时间:2024/04/27 15:19
转自:http://www.2cto.com/kf/201503/382062.html
第一步,继承std::streambuf
#include <iostream>#include <streambuf> class MyStreamBuf : public std::streambuf{ enum { BUFFER_SIZE = 255, }; public: MyStreamBuf() { buffer_[BUFFER_SIZE] = '\0'; setp(buffer_, buffer_ + BUFFER_SIZE - 1); } ~MyStreamBuf() { sync(); } protected: virtual int_type overflow(int_type c) { if (c != EOF) { *pptr() = c; pbump(1); } flush_buffer(); return c; } virtual int sync() { flush_buffer(); return 0; } private: int flush_buffer() { int len = int(pptr() - pbase()); if (len <= 0) return 0; if (len <= BUFFER_SIZE) buffer_[len] = '\0'; #ifdef ANDROID android_LogPriority t = ANDROID_LOG_INFO; __android_log_write(t, "mylog", buffer_);#else printf("%s", buffer_);#endif pbump(-len); return len; } private: char buffer_[BUFFER_SIZE + 1];};第二步,创建MyStreamBuf对象,并指定给std::cout
MyStreamBuf g_MyStreamBuf; std::cout.rdbuf(&g_MyStreamBuf); //NOTE: std::endl会立即调用sync方法将缓冲区字符写入log,并不只是换行用std::cout << "hello " << 123 << std::endl;std::cout << "pi = " << 3.14 << std::endl;
这样,就可以是Eclipse的LogCat查看std::cout输出了。
0 0
- Android NDK重定向std::cout输出到log
- Android NDK重定向std::cout输出到log
- 如何重定向std::cout
- Android如何打印std::cout/printf(重定向stdout)
- cout 重定向到文件
- Cout重定向到文件
- cout重定向到文件
- cout重定向到文件
- cout 重定向到文件
- vc error PRJ0019编译错误和std::cout输出重定向
- vc error PRJ0019编译错误和std::cout输出重定向 .
- 使用std::copy将std::map输出到std::cout
- wxpython的重定向到log输出窗口
- 使Log4j的log输出重定向到指定函数
- cout输出重定向两种方法
- 在窗口应用中使用printf,cout 等将输出重定向到console
- 在窗口应用中使用printf,cout 等将输出重定向到console
- 在窗口应用中使用printf,cout 等将输出重定向到console
- Android ViewPager切换的N种动画
- iOS性能优化:Instruments使用实战
- activity与fragment切换动画
- android blktrace
- IntelliJ IDEA 13搭建Android集成开发环境(图文教程)
- Android NDK重定向std::cout输出到log
- 用tomcat启动项目并且改端口
- boost::timer之时间处理器
- 给出两个字符串a和b,判断字符串a是否包含字符串b
- 启动项目maven报插件错误
- Linux C编程一站式学习第七章
- 第2周-项目5-数组作数据成员-工资类(动态数组)
- [Python]中缀表达式转前缀表达式
- 小马哥---高仿红米MI NOTE 小米5 实战详细拆机主板图与开机界面图 H78主板 高仿小米15年新版