
C++
庐州李大爷
小时候的梦,我知道
展开
-
结构体Struct对齐
#pragma pack(4)typedef struct{ int8_t a; int32_t b; int8_t c; int8_t d; int16_t e[10];}TestStu;#pragma pack()以上定义的结构体,测试的时候,使用sizeof()函数求取size的时候,在不添加pragma pack()得到的size是32pack的值依次为1、2、4的时候,得到的size依次为27、28原创 2021-12-21 16:22:28 · 241 阅读 · 0 评论 -
关于std::thread资源释放问题
如果线程变量是非局部变量需要手动去进行释放线程资源。首先必须要有一个可以控制线程的标志位,比如变量,或者队列的结束符等。isstop = true;_thread->join();delete _thread;_thread = nullptr;才有无锁队列concurrentqueue实现线程控制数据,关于无锁队列,源码地址:https://github.com/cameron314/concurrentqueue//.h文件的部分定义struct Equeue_stu{ cha原创 2021-07-10 11:06:02 · 6622 阅读 · 0 评论 -
C++数据序列化(自定义结构体的保存和读取)
碰到一个需求,结构体数据需要保存下来,以便下次程序打开后再次加载。结构体存在嵌套。查找资料,确认可以通过文件的读写进行操作,FILE,fread和fwrite可以实现,以下是测试代码(使用模板实现相关功能)核心部分是template <class T>void write_dataToFile( T *t, const char *filePath)template <class T>void read_dataFromFile(T* t, const char *fi原创 2021-06-10 11:11:32 · 4145 阅读 · 7 评论 -
libhv---编译与安装
libhv提供了原生Makefile(这里仅指适用于类unix系统的Makefile)和cmake两种构建方式。根据开发者本人的博客进行编译安装,一直报错,测试发现是由于cmake中勾选了BUILD_EXAMPLES选项。不建议勾选案例,注意是案例中存在很多跨平台的代码,使用vs无法正常编译通过编译流程1、源码地址,下载解压项目地址:https://github.com/ithewei/libhv.git码云镜像:https://gitee.com/ithewei/libhv.git2、安原创 2021-06-03 11:20:45 · 1421 阅读 · 0 评论 -
QGraphicsItem封装的直线控件(添加箭头)
最近在封装QGraphicsScene的很多控件,需要在绘制直线后,显示箭头表示方向,并且该直线的起点和终点可变化(箭头需要实时变化) qreal alph = atan2(m_pointF2.y()-m_pointF1.y(), m_pointF2.x()-m_pointF1.x()); painter->translate(m_pointF2); qreal a...原创 2018-11-29 17:27:13 · 7064 阅读 · 18 评论 -
C++ std::string[] 数组长度
std::string string_array[] = {"qdfsdasdewqd","dsfcvxfdhtrh","dcv455"};int num = sizeof(string_array) / sizeof(string_array[0]);任何基本数组的个数都可以用“sizeof(数组名)/sizeof(数组某一项)”得到,一般都是 sizeof(string_array)/sizeof(string_array[0])测试:无论string[0]是什么内容,sizeof()得到的结果转载 2020-12-02 16:18:52 · 2772 阅读 · 0 评论 -
关于QGraphicsView中的相对坐标系自定义实现
需求:不采用QGraphicsView本身的平移和旋转是因为所有的item是自定义封装的,存在交互上的数据变化,如果采用Qt自带的转换会导致交互数据出现错乱实现思想:放弃了坐标系的概念,采用虚拟坐标系代替–坐标系不存在,但是体现在所有item的数据上;所有的数据都是原始坐标系,只是记录相对坐标系的值。实现步骤:当前坐标系的点----》需要被转换的坐标系的点----》原始坐标系的点简单...原创 2019-09-09 17:16:58 · 960 阅读 · 0 评论 -
关于回调函数(备忘)
void funcA( void (*callback)()){ callback(); qDebug()<<"AAAAAAAAAA";}void funcB(){ qDebug()<<"BBBBBBBBBBB";}回调函数主要利用函数指针实现的,上述代码是一个简单的回调函数实例。funcA函数接收一个指针(指针类型根据所需要调用的函数的返回值来设置,上面的...原创 2019-06-15 10:42:38 · 462 阅读 · 0 评论 -
Qt多语言----QObject::tr()
tr()函数的参数只要是char*类型即可。 QString strTest = "测试"; QByteArray byteArray = strTest.toLatin1(); char * ch = byteArray.data(); this->setWindowTitle(QObject::tr(ch));...原创 2018-12-24 16:46:19 · 3112 阅读 · 1 评论 -
Qt QImage处理(灰度)
转载来自: http://www.cnblogs.com/Romi/archive/2012/12/03/2800039.html参考代码,又在其他地方找了相关的知识点,才了解代码的含义,不一一赘述,侵删 QImage *image = new QImage(":/1.jpg"); QImage *grayImage = new QImage; unsigned ch...转载 2018-10-25 10:30:54 · 4535 阅读 · 0 评论 -
char* char int 和ASCII码
char可以直接转出ASCII码值char ch = 'a';int asc_value = ch; //asc_value就是a的ASCII码值如果是char*的话,需要做位移运算才能得到char* 的ASCII码值,下面的代码可以得到string的每个字符的ASCII码值,但是不是string的ASCII码值 string s = "cup"; char...原创 2018-05-11 15:53:24 · 1823 阅读 · 0 评论