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++将地址转换为字符串相关推荐

  1. ip地址转换数字函数 iton_esp8266 inet_ntoa函数实现 ip地址转换为字符串 MAC地址转字符串...

    esp8266芯片可作为mcu,功能很强大,但与传统mcu相比,可用资源实在不多,连浮点数都不支持 IP地址转字符创函数inet_ntoa很方便,但8266中没有!!!!! 本节将讲述如何自己实现in ...

  2. c语言mac地址字符串转换成数组,CString类型的MAC地址转换为数组类型

    在最近完成计算机网络课程设计的过程中,您需要将mac地址转换为六个字节. 我在互联网上找到了信息. 基本思想是将mac地址分为六个部分,每个部分为十六个. 基数将转换为十进制数,并分配给六字节数组的每 ...

  3. Linux网络编程之IP地址转换为无符号整数的方法

    Linux网络编程之IP地址转换为无符号整数的方法,代码如下:(没考虑异常输入) #include <stdio.h> #include <string.h> #include ...

  4. macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号

    一.使用流程 Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数.macOS下的symbolicatecrash也具备相应的功能.对应 ...

  5. C++ 整形转换为字符串的方式总结

    目录 整形转换为字符串 itoa sprintf stringstream 整形转换为字符串 itoa char* itoa (int value, char * str, int base) val ...

  6. C语言把浮点数转换为字符串

    文章目录 1.把float/double格式化输出到字符串 2.注意事项 3.获取视频教程 4.版权声明 1.把float/double格式化输出到字符串 标准的C语言提供了atof函数把字符串转do ...

  7. C语言把整数转换为字符串

    文章目录 1.把整数/长整数格式化输出到字符串 2.注意事项 3.获取视频教程 4.版权声明 各位可能在网上看到用以下函数可以将整数转换为字符串: itoa(); //将整型值转换为字符串ultoa( ...

  8. 怎样将数字转换为字符串?

    怎样将数字转换为字符串? C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...

  9. 接入高德开放平台实现地址转换为经纬度坐标

    高德地图API 1 地址转为经纬度 后台人员填写完房源详情地址后,由此地址转为,电子地图中的经纬度.从而方便日后前台在电子地 图中的标识显示. 高德地图开放平台:https://lbs.amap.co ...

最新文章

  1. CommonJS规范与AMD规范的理解
  2. 设计模式:责任链模式(Chain of Responsibility)
  3. SQL里变量的声明以及常用函数举例
  4. 阿里云建成全国最大数据中心集群 全面应用自研硬核技术
  5. 自动化测试基础篇--Selenium中数据参数化之TXT
  6. G1手机上的VOIP之旅 - SIP Server + SipDroid
  7. 【转载】教你使用 Reflexil 反编译.NET
  8. 数据库连接池的深入理解
  9. 麟龙指标通达信指标公式源码_麟龙四量图通达信指标公式源码
  10. 桌面下雪软件测试工程师,桌面下雪
  11. sql插入数据的方式
  12. 人口增长模型 源代码
  13. [电动智能汽车-7]:汽车CAN总线详解
  14. 基于mysql的报表工具有哪些?值得推荐的mysql报表工具
  15. 微信问卷调查html,最详细测评!在微信里做问卷调查,这 4 款小程序你一定会用到...
  16. psd转html的素材,Ai转PSD格式完美保留图层脚本插件
  17. 【2.25】认识Redis
  18. 数据分析小项目01 __《少年的你》豆瓣短评__V1.0
  19. MySQL及数据库相关
  20. ZOJ 4097 Rescue the Princess 边双缩点+LCA

热门文章

  1. Python all函数 - Python零基础入门教程
  2. BugkuCTF-MISC题telnet
  3. hook控制浏览器的方法_Java-Hook技术-入门实践+反射、动态代理、热修复再看看
  4. 10进制转换16进制补足0_信息技术教师资格必考内容——进制换算(一)
  5. linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...
  6. 材料二电子计算机及网络技术有限公司,高等职业教育计算机网络技术专业(三二分段)备案材料.doc...
  7. c语言链表贪吃蛇脚本之家,C++控制台实现贪吃蛇游戏
  8. api demo 京东商品详情_jd-demo
  9. linux中gedit中定义变量,linux中的gedit
  10. linux pipe 文件,Linux系统常用指令、管道(pipe)、文件查找(find)