C++将地址转换为字符串
C++将地址转换为字符串
有时候在做程序设计的时候,有可能需要做一个类似messageBus的功能,并且需要一个key保证唯一,那么如何实现这个key的唯一呢?大致两种思路:
- 使用函数签名,因为messagebus绑定的是一个函数,并且对应一个topic,但是为了能够自适应各式各样的函数,就需要模板和元编程来解决,但是这样的局限很大,有一些函数我们是无法获取签名的(你一定会需要的);
- 使用函数地址,这种方式是相对最方便的,由于函数地址是唯一的,这样我们就可以生成唯一的key,但是难就难在如何获取函数地址,并且转换成字符串。
案例
class TestMsg
{public:void test(){std::cout << "test class no const test " << std::endl;}void test1(){std::cout << "test class no const test1" << std::endl;}
};
测试
TestMsg msg;
vector<TestMsg> tests;size_t cnt = 1000000;
tests.resize(cnt);for( size_t i = 0; i < cnt; ++i )
{tests[i] = TestMsg();
}
auto fp = &TestMsg::test;auto start = std::chrono::steady_clock::now();for( size_t i = 0; i < cnt; ++i )
{void* ss = reinterpret_cast<void*>(&fp);std::stringstream ss1;ss1 << ss << &tests[i];std::string name = ss1.str();
}auto end = std::chrono::steady_clock::now();
std::cout << std::chrono::duration<double, std::milli>(end -start).count() << " ms" << std::endl;
主要转换是通过stringstream
这个类,使用它的前提是转换成void *
类型。
C++将地址转换为字符串相关推荐
- ip地址转换数字函数 iton_esp8266 inet_ntoa函数实现 ip地址转换为字符串 MAC地址转字符串...
esp8266芯片可作为mcu,功能很强大,但与传统mcu相比,可用资源实在不多,连浮点数都不支持 IP地址转字符创函数inet_ntoa很方便,但8266中没有!!!!! 本节将讲述如何自己实现in ...
- c语言mac地址字符串转换成数组,CString类型的MAC地址转换为数组类型
在最近完成计算机网络课程设计的过程中,您需要将mac地址转换为六个字节. 我在互联网上找到了信息. 基本思想是将mac地址分为六个部分,每个部分为十六个. 基数将转换为十进制数,并分配给六字节数组的每 ...
- Linux网络编程之IP地址转换为无符号整数的方法
Linux网络编程之IP地址转换为无符号整数的方法,代码如下:(没考虑异常输入) #include <stdio.h> #include <string.h> #include ...
- macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号
一.使用流程 Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数.macOS下的symbolicatecrash也具备相应的功能.对应 ...
- C++ 整形转换为字符串的方式总结
目录 整形转换为字符串 itoa sprintf stringstream 整形转换为字符串 itoa char* itoa (int value, char * str, int base) val ...
- C语言把浮点数转换为字符串
文章目录 1.把float/double格式化输出到字符串 2.注意事项 3.获取视频教程 4.版权声明 1.把float/double格式化输出到字符串 标准的C语言提供了atof函数把字符串转do ...
- C语言把整数转换为字符串
文章目录 1.把整数/长整数格式化输出到字符串 2.注意事项 3.获取视频教程 4.版权声明 各位可能在网上看到用以下函数可以将整数转换为字符串: itoa(); //将整型值转换为字符串ultoa( ...
- 怎样将数字转换为字符串?
怎样将数字转换为字符串? C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...
- 接入高德开放平台实现地址转换为经纬度坐标
高德地图API 1 地址转为经纬度 后台人员填写完房源详情地址后,由此地址转为,电子地图中的经纬度.从而方便日后前台在电子地 图中的标识显示. 高德地图开放平台:https://lbs.amap.co ...
最新文章
- CommonJS规范与AMD规范的理解
- 设计模式:责任链模式(Chain of Responsibility)
- SQL里变量的声明以及常用函数举例
- 阿里云建成全国最大数据中心集群 全面应用自研硬核技术
- 自动化测试基础篇--Selenium中数据参数化之TXT
- G1手机上的VOIP之旅 - SIP Server + SipDroid
- 【转载】教你使用 Reflexil 反编译.NET
- 数据库连接池的深入理解
- 麟龙指标通达信指标公式源码_麟龙四量图通达信指标公式源码
- 桌面下雪软件测试工程师,桌面下雪
- sql插入数据的方式
- 人口增长模型 源代码
- [电动智能汽车-7]:汽车CAN总线详解
- 基于mysql的报表工具有哪些?值得推荐的mysql报表工具
- 微信问卷调查html,最详细测评!在微信里做问卷调查,这 4 款小程序你一定会用到...
- psd转html的素材,Ai转PSD格式完美保留图层脚本插件
- 【2.25】认识Redis
- 数据分析小项目01 __《少年的你》豆瓣短评__V1.0
- MySQL及数据库相关
- ZOJ 4097 Rescue the Princess 边双缩点+LCA
热门文章
- Python all函数 - Python零基础入门教程
- BugkuCTF-MISC题telnet
- hook控制浏览器的方法_Java-Hook技术-入门实践+反射、动态代理、热修复再看看
- 10进制转换16进制补足0_信息技术教师资格必考内容——进制换算(一)
- linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...
- 材料二电子计算机及网络技术有限公司,高等职业教育计算机网络技术专业(三二分段)备案材料.doc...
- c语言链表贪吃蛇脚本之家,C++控制台实现贪吃蛇游戏
- api demo 京东商品详情_jd-demo
- linux中gedit中定义变量,linux中的gedit
- linux pipe 文件,Linux系统常用指令、管道(pipe)、文件查找(find)