CPP
一禅的师兄
这个作者很懒,什么都没留下…
展开
-
qt 串口接收不完整
Qt 官方串口库QSerialPort的 readyRead() 信号,只要有数据就抛出,这就导致一条数据分多次抛出。由于正常的数据没有固定的开头和结尾,这就导致无法获取正常的一组数据。方法一:确定一个完整的开始标志和结尾标志解决思路:增加接收延时功能,把多次读取的数据保存到缓冲区,延时结束,一次性读取数据示例:QSerialPort *serialPort= new QSerialPort();connect(serialPort, SIGNAL(readyRead()), this, S.原创 2021-07-03 17:25:08 · 2191 阅读 · 0 评论 -
十六进制字符串转为十六进制整数
#include <stdio.h>#include <stdlib.h> void StrToHex(const char lpSrcStr[], unsigned char lpRetBytes[], size_t *lpRetSize){ if (lpSrcStr != NULL && lpRetBytes != NULL && lpRetSize != NULL) { size_t uiLength = st.原创 2021-06-29 10:03:32 · 286 阅读 · 0 评论 -
qt 数据处理的过程常用的函数总结
在Qt开发中经常会使用到字节数组和16进制及ASCII码的转换。现分享如下:1.Qt字节数组和十六进制的转换QString QUIHelper::byteArrayToHexStr(const QByteArray &data){ QString temp = ""; QString hex = data.toHex(); for (int i = 0; i < hex.length(); i = i + 2) { temp += hex..转载 2021-06-10 14:24:10 · 867 阅读 · 1 评论 -
qt打包教程
https://blog.csdn.net/kangshuaibing/article/details/84951619转载 2021-05-15 16:46:15 · 134 阅读 · 0 评论 -
函数指针的妙用,可以快速实现底层与应用层的分开编写
#include <iostream>using namespace std;void fun1(void){ cout<<"fun1 is called"<<endl;}void fun2(void){ cout<<"fun2 is called"<<endl;}typedef struct{ void (*P1) (void); void (*p2) (void);}call;int mai.原创 2021-04-25 18:20:31 · 187 阅读 · 0 评论 -
C++ string 类函数总结(用的非常多,这里单独总结一下)
C++中string常用函数用法总结string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>,注意不是<string.h>,下面记录一下string中比较常用的用法。string的定义及初始化string s1 = "hello"; //初始化字符串string s2 ("world"); //另一种初始化 string s3; //初始化字符串,空字符串string s4(5, 'a'); //s4由.原创 2020-11-24 22:22:56 · 483 阅读 · 0 评论 -
Qt界面没有输出
最近用QT写一个控制台程序,却不能将提示文本输出到屏幕。cout<<"abcd"正常运行但是屏幕上却没有输出。解决办法:在qt的工程文件(.pro文件)中加入以下代码:CONFIG += consoleQT -= gui原创 2020-08-26 18:43:11 · 1258 阅读 · 0 评论 -
内存对齐
C语言和C++中空类和空结构体的大小在C++中规定了空结构体和空类的内存所占大小为1字节,因为c++中规定,任何不同的对象不能拥有相同的内存地址。而在C语言中,空的结构体在内存中所占大小为0。(gcc中测试为0,其他编译器不一定)为什么要内存对齐?1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作原创 2020-07-27 13:50:55 · 75 阅读 · 0 评论 -
重载和重写概念面试前强化下
一、概念重载:是静态多态。在编译的时候就已经确定。重载 的两个函数名是相同的,但是参数的lieb不同(个数、类型),返回值也可以不同,在同一个作用域中重写:子类继承了父类,父类中函数为虚函数,需要加上virtual,(不能用static)在子类中需要重新当以这个虚函树,重写要求返回值相同,参数类型、函数名相同,不在同一个作用域。为了砂锅问到底,进一步总结多态方面的知识总结,为了应对秋招准备.二、多态的概念在面向对象语言中,接口的多种不同实现方式即为多态。多态的实现方法主要有:虚函数、原创 2020-07-25 23:34:46 · 107 阅读 · 0 评论 -
析构函数的顺序
考点:c++里的static变量构造一次,在最后析构一次#include <iostream>#include <stdlib.h>#include <fstream>using namespace std;class Log{public: Log(size_t id,const std::string& filename):m_id(id){ std::cout<<"create:"<<id<.原创 2020-07-12 23:39:23 · 259 阅读 · 0 评论 -
多线程编程从入门到放弃
1、在共享数据的时候,在没有进行同步的时候,多线编程打印数据会出现问题demo 1:lude <future>#include <cmath>#include <vector>#include <cstdlib>using namespace std;class Counter{public: void addcount(){ m_count++; } int count()const{ retur原创 2020-07-12 11:18:29 · 105 阅读 · 0 评论 -
支持C++11 的简单makefile
src = $(wildcard *.cpp)targets = $(patsubst %.cpp, %, $(src))CC = g++CFLAGS = -Wall -g -lpthreadCPP_FLAGS='-std=c++11'all:$(targets)$(targets):%:%.cpp $(CC) $(CPP_FLAGS) $< -o $@ $(CFLAGS).PHONY:clean allclean: -rm -rf $(targets) *.o其中.原创 2020-07-11 17:39:46 · 2041 阅读 · 0 评论 -
使用匿名函数打印一维数组
void print(vector<int> a){ for_each(begin(a),end(a),[=](int x){ cout<<x<<endl; }); }原创 2020-07-11 16:14:48 · 157 阅读 · 0 评论 -
C++ 计算一个类的大小
计算一个类对象的大小时的规律: 1、空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同); 2、一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的; 3、因此一个对象的大小≥所有非静态成员大小的总和(包括动态分配的变量...); 4、当类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针vPtr指向虚函数表VTable; 5、虚继承的情况:虚继承的实现是通过...原创 2020-07-11 12:04:01 · 1209 阅读 · 1 评论 -
虚函数原理
https://www.cnblogs.com/zkfopen/p/11061414.html原创 2020-06-26 18:24:17 · 87 阅读 · 0 评论 -
为啥静态函数只能调用静态成员呢
首先得知道为什么要使用静态数据成员: 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。静态数据成员的使...原创 2020-06-25 23:04:54 · 5186 阅读 · 1 评论 -
set
1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储原创 2020-05-31 09:56:54 · 128 阅读 · 0 评论 -
qt的几个常用的快捷键
1.代码的对齐功能 ctrl + i2.代码的整体左移 shift+Tab3.选中代码进行整体右移 Tab原创 2020-01-12 22:52:33 · 1649 阅读 · 0 评论 -
自己感觉比较好的几个博客(备忘)
https://www.cnblogs.com/wuchanming/category/624790.html(C++ )原创 2020-01-01 15:11:44 · 95 阅读 · 0 评论 -
深入理解回调函数
1.回调函数是啥?回调函数:就是一种将双向依赖改为单向依赖的好工具。是一种在定义的模块不运行,交给另外一个模块运行的函数。补充一个基本概念:【解引用】 解引用"*"的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,"解"就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为"解引用"。参考网址:https://blog....原创 2019-12-29 22:59:19 · 358 阅读 · 0 评论 -
C++ 文件操作以及二进制操作进行对序列化
这里主要是讨论fstream的内容:#include <fstream> //文件操作需要引拥的头文件ofstream //文件写操作 内存写入存储设备ifstream //文件读操作,存储设备读区到内存中fstream //读写操作,对打开的文件可进行读写操作1.打开文件(ifstream)在fstr...原创 2019-12-29 20:23:05 · 657 阅读 · 0 评论 -
数组指针
首先,理解一下数组指针和指针数组这两个名词:“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了——数组的指针:是一个指针,什么样的指针呢?指向数组的指针。指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长...原创 2019-12-27 20:15:54 · 82 阅读 · 0 评论 -
所有的类模板函数都写在类的外部,在不同的.h 与CPP 中
类模板说明与类模板分开,本代码在Linux 环境下编译通过1.主函数:/************************************************* * copyright @ zjl 2018-2020.All rights reserved * Filename :数组类,模板简单实现 * Atuhor: zhong * Version:v1.0 ...原创 2019-12-26 17:25:37 · 356 阅读 · 0 评论 -
VS中的额安全注意
C++中的如何想使用C中的一些函数如scanf 函数等最好是加上宏定义,不然编译就会报安全错误define _CRT_SECURE_NO_WARNINGS原创 2019-12-22 13:46:30 · 80 阅读 · 0 评论 -
C++ 友元函数详解
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算...转载 2019-12-21 21:28:53 · 1172 阅读 · 0 评论 -
C++学习博客
https://www.sylar.top/sblog/search?cat_name=C%252B%252B(博客)C++ 服务视屏网站:https://www.bilibili.com/video/av53602631?p=1转载 2019-12-17 21:13:06 · 172 阅读 · 0 评论 -
const 的地位
直接上代码:首先切记一句话:前缀++比后缀++的效率高,返回引用的效率比返回对象的效率高,所以前缀++返回引用,后缀++返回对象。看下面的程序可以发现以下几点:1.后缀形式的参数并没有被用到,它只是语法上的要求,为了区分而已;2.后缀形式返回一个const对象;这样做是大有深意滴~~我们知道操作符重载本质上是一个函数而已,它应该和操作符原来意义、使用习惯相似,而对于int内...原创 2019-12-12 11:32:42 · 106 阅读 · 0 评论 -
C++ STL 中的Set容器使用总结
set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值;另外,还得确保根节点的左子树的高度与有字数的高度相等,这样,二叉树的高度最小,从而检索速度最快。要注意的是,它不会重复插入相同键值的元素,而采取忽略处理。...原创 2019-12-12 10:59:20 · 854 阅读 · 0 评论 -
C++ 红黑树全解
https://www.cnblogs.com/skywang12345/p/3624291.html转载 2019-12-04 22:04:41 · 110 阅读 · 0 评论 -
C++ STL list应用解决约斯夫问题
【实例】用 list 解决约瑟夫问题。约瑟夫问题是:有 n 只猴子,按顺时针方向围成一圈选大王(编号为 1~n),从第 1 号开始报数,一直数到 m,数到 m 的猴子退到圈外,剩下的猴子再接着从 1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。编程求输入 n、m 后,输出最后猴王的编号。输入数据:每行是用空格分开的两个整数,第一个是 n,第二个是 m(0<m, n&...原创 2019-11-28 23:07:24 · 257 阅读 · 0 评论 -
C++中的list 使用总结
1.STL ---list简单介绍list 是顺序容器的一种。list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素,如图1所示。在 list 容器中,在已经定位到要增删元素的位置的情况下,增删元素能在常数时间内完成。如图2所示,在 ai 和 ai+1 之间插入一个元素,只需要修改 ai 和 ai+1 中...原创 2019-11-28 22:50:20 · 844 阅读 · 0 评论 -
C++ 内存分配方式
C++内存分配的方式有3种:1.从静态存储区分配,程序在编译的时候就已经分配好了,并且在整个运行期间都存在,比如静态变量和全局变量。ps:实际上静态变量和全局变量你如果不初始化,系统会自动帮你初始化为0。2.在栈上创建,函数参数和内部的非静态局部变量(包括数组),以及一些函数返回值;3.在堆上分配,也称为动态内存分配。在程序运行...原创 2019-11-20 19:37:35 · 811 阅读 · 0 评论 -
(*p)++和*(p++)和*p++的区别
下面的博客写的还不错https://blog.csdn.net/judongbin123/article/details/83049346转载 2019-11-11 21:38:16 · 446 阅读 · 0 评论 -
C++ STL容器Vector的实现原理与模拟实现vector
1.vector 的数据结构 vector采用简单的线性连续空间,以两个迭代器start和end分别指向头尾,并以迭代器end_of_storage指向容量尾端。容量可能比(尾-头)还大,多余即备用空间。简单来说就是,每个动态数组都分配有一定容量,当存储的数据达到容量的上限的时候,就重新分配内存以两个迭代器start和end分别指向头尾,并以迭代器end_of_storage指向容...原创 2019-11-11 21:22:00 · 946 阅读 · 0 评论 -
C++ STL模板库学习
https://blog.csdn.net/qq_36163358/article/details/84287081原创 2019-11-08 22:57:19 · 74 阅读 · 0 评论 -
C++ 实现双向链表(可以完全运行在Linux系统上)
1.具体参考大话数据结构2 、【.h文件】#ifndef __MYINCLUDE_H#define __MYINCLUDE_H#include <iostream>using namespace std;//头文件只用于函数的声明//定义一个节点template<class T> struct DNode {public: T va...原创 2019-11-06 23:06:34 · 171 阅读 · 0 评论 -
C语言详细讲解指针
https://blog.csdn.net/constantin_/article/details/79575638 C语言https://blog.csdn.net/starstar1992/article/details/54913261 KMP算法转载 2019-10-20 13:14:55 · 101 阅读 · 0 评论 -
深入理解Qt中的信号槽机制用法
https://www.cnblogs.com/wanghui1234/p/8964968.html转载 2019-07-21 09:03:26 · 225 阅读 · 0 评论 -
Static 的用法
https://blog.csdn.net/qianyayun19921028/article/details/80365126static用来控制变量的存储方式和可见性 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容...转载 2019-07-31 15:42:34 · 97 阅读 · 0 评论 -
C/C++运算符重载详解(杂谈)
https://www.cnblogs.com/ECJTUACM-873284962/p/6771262.html//https://www.runoob.com/cplusplus/cpp-friend-functions.html(友员函数demo)友元函数的使用因为友元函数没有this指针,则参数要有三种情况:要访问非static成员时,需要对象做参数;要访问stati...转载 2019-07-27 20:12:45 · 163 阅读 · 0 评论