操纵器、应用器
来源:互联网 发布:阿里云网站搭建 编辑:程序博客网 时间:2024/03/29 10:16
c++有许多输出操纵符,例如ostream& flush(ostream&o)
,
它却可以使用cout<<flush,
这是如何做到的呢?
#include <iostream>using namespace std;char* to_hex(unsigned long x){ static char ret[20] = "0x0\0"; static char table[17]="0123456789ABCDE"; int i = 2; if (x == 0){ return "0x0\0"; } while(x!=0){ ret[i++] = table[x%16]; x /= 16; } ret[i--] = '\0'; int j = 2; while(j<i){ ret[i] ^= ret[j]; ret[j] ^= ret[i]; ret[i] ^= ret[j]; ++j;--i; } return ret;}class To_Hex{public: To_Hex(char* (* tohex)(unsigned long),unsigned long x) :m_tohex(tohex),m_x(x){} void operator()(ostream& o)const{ o << (*m_tohex)(m_x); }private: char* (* m_tohex)(unsigned long); unsigned long m_x;};ostream& operator<<(ostream& o, const To_Hex& to){ to(o); return o;}To_Hex hexconv(unsigned long x){ return To_Hex(to_hex,x);}int main(){ cout << to_hex(0) << ends << to_hex(16) << ends << to_hex(10) << endl; //hexconv()-> const To_Hex-> operator<<()-> operator()-> to_hex() cout << hexconv(0) << ends << hexconv(16) << ends << hexconv(10) << endl; cout << hexconv(0) << ends << hexconv(16) << ends << hexconv(10) << endl; cout << hexconv(0) << ends << hexconv(16) << ends << hexconv(10) << endl; cout << hexconv(0) << ends << hexconv(16) << ends << hexconv(10) << endl; return 0;}
阅读全文
0 0
- 操纵器、应用器
- 应用器 &amp;amp; 操纵器
- osg操纵器解析
- C++沉思录读书笔记(29章)- 应用器,操纵器和函数对象
- FCL小应用系列-----------如何操纵cookies
- 苹果打击人为操纵应用排名
- vmtouch-系统pagecache查看和操纵器
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档
- JavaScript高级应用:使用DOM技术操纵文档
- 用Perl 应用Win32::OLE操纵Excel文件
- JQuery EasyUI form ajax 提交后办事器返回操纵成果,IE提示下载
- 数据挖掘在股指期货操纵行为识别中的应用理论与模型研究
- DOM和SAX是应用中操纵XML文档的区别
- 如何解决AJAX 的缓存
- 编程基础1
- [51nod-1432]独木舟 题解
- RGB色转为灰度色算法_img2ascii_char
- Day 9 作业
- 操纵器、应用器
- 关于消息队列的使用
- docker下部署Tomcat运行war包
- 偶遇No buffer space available
- 循环三 找符合条件的最小数
- spark-shell在yarn client模式下启动报错
- ES6-字符串扩展-includes(), startsWith(), endsWith()
- 数组的定义
- 为什么不应该使用ZooKeeper做服务发现