android重定向cout,使用cout来打印日志
来源:互联网 发布:淘宝网电影票 编辑:程序博客网 时间:2024/05/23 01:45
android_buf.h
#include <iostream>#include <streambuf>#include <android/log.h>class AndroidBuf : public std::streambuf { enum { BUFFER_SIZE = 255, };public: AndroidBuf(); ~AndroidBuf();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();private: char buffer_[BUFFER_SIZE + 1];};
android_buf.cpp
#include "android_buf.h"AndroidBuf::AndroidBuf() { buffer_[BUFFER_SIZE] = '\0'; setp(buffer_, buffer_ + BUFFER_SIZE - 1);}AndroidBuf::~AndroidBuf() { sync();}int AndroidBuf::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, "Native", buffer_);#else printf("%s", buffer_);#endif pbump(-len); return len;}
指定给std::cout
#include "android_buf.h"int main() {std::cout.rdbuf(new AndroidBuf);//NOTE: std::endl会立即调用sync方法将缓冲区字符写入log,并不只是换行用std::cout << "hello " << 123 << std::endl;}
使用完记得释放引用
delete std::cout.rdbuf(0);
参考:
http://blog.csdn.net/zaffix/article/details/44226503
https://stackoverflow.com/questions/8870174/is-stdcout-usable-in-android-ndk
阅读全文
0 0
- android重定向cout,使用cout来打印日志
- Android如何打印std::cout/printf(重定向stdout)
- 如何重定向std::cout
- cout 流的重定向
- cout 重定向到文件
- Cout重定向到文件
- cout重定向到文件
- cout重定向到文件
- cout 重定向到文件
- Android NDK重定向std::cout输出到log
- Android NDK重定向std::cout输出到log
- cout输出重定向两种方法
- 如何重定向cin和cout?
- 在窗口应用中使用printf,cout 等将输出重定向到console
- 在窗口应用中使用printf,cout 等将输出重定向到console
- 在窗口应用中使用printf,cout 等将输出重定向到console
- cout
- [cout]
- CentOS之——解决SSH自动断开办法
- html5_锚点,点击到相应的位置
- sql注入
- mysql不常用语句
- 【经验】转一个非常好的【SCI论文写法攻略】
- android重定向cout,使用cout来打印日志
- C++动态内存管理
- 【个人模板】 筛法求素数
- Ford:$27 Security Access(2)
- 二进制安装mariadb的脚本
- linux——linux基础习题
- unity开发之四:摄像机渲染纹理RenderTexture的使用
- SQL Server 2014 虚拟机的自动备份 (Resource Manager)
- 【个人模板】 动态规划01背包