![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 57
mikasoi
这个作者很懒,什么都没留下…
展开
-
QGraphicsView中文使用手册
QGraphicsView中文使用手册原创 2021-07-18 16:02:55 · 602 阅读 · 1 评论 -
23种设计模式实例详解
由于最开始不是在CSDN上面发布的,也不想在复制粘贴一般,就直接上地址吧。设计模式01-Template Method(模板方法)模式-按套路做事https://www.toutiao.com/i6853339756211175950/设计模式02-Strategy(策略)模式-我也能懂车https://www.toutiao.com/i6853403762942280196/设计模式03-Observer(观察者)模式-公众号订阅https://www.touti...原创 2020-08-02 18:00:01 · 252 阅读 · 0 评论 -
通配符匹配实现方法
给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。s可能为空,且只包含从a-z的小写字母。 p可能为空,且只包含从a-z的小写字母,以及字符?和*。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/wildcard-matchingclass Solution {public: boo...原创 2020-07-01 23:30:17 · 1388 阅读 · 0 评论 -
inet_aton、inet_addr、inet_ntoa、inet_pton、inet_ntop
inet_aton、inet_addr、inet_ntoa这3个函数是在点分十进制数串(例如“192.168.1.1”)与它长度为32位的网络字节序二进制值间转换IPV4地址。两个较新的函数inet_pton、inet_ntop对于IPV4地址和IPV6地址都适用。int inet_aton(const char *strptr, struct in_addr *addrptr);/** 功能:strptr所指向的C字符串转换成一个32位的网络字节序二进制值,并通过指针addrptr来存储。原创 2020-06-30 23:36:33 · 686 阅读 · 0 评论 -
QT分别实现Windows和Linux下开机自启动的方法
本文介绍的开机自启动方法在Windows、Linux-x86、Linux-arm、Linux-mips等平台都测试运行正常 首先无论是Windows还是Linux平台下想要在QT程序中打开/关闭开机自启动,都要以管理员身份运行程序才行,Windows下就是右击程序,然后选择以管理员身份运行即可,Linux下就以sudo ./AppName命令启动程序 Windows:Windows下开机自启动的方法就是写或删除注册表打开开机自启动:QString appName = QApp..原创 2020-06-04 22:21:05 · 1253 阅读 · 0 评论 -
C++ STL stack用法
构造template <class T, class Container = deque<T>> class stack;如上,这对尖括号中有两个参数,第一个是T,表示栈中存放的数据的类型,比如int,double,或者结构体之类。第二个参数指明底层实现的容器类型,也就是指明这个栈的内部实现方式,比如vector,deque,list。如果不指明它,默认使用deque(双端队列)。当然一般情况下不需要指定这一项参数。// 构造 stacks#include &l原创 2020-06-01 23:06:06 · 254 阅读 · 0 评论 -
calloc、malloc、realloc函数的区别及用法
三者都是分配内存,都是stdlib.h库里的函数,但是也存在一些差异。(1)malloc函数。其原型void *malloc(unsigned int num_bytes);num_byte为要申请的空间大小,需要我们手动的去计算,如int *p = (int *)malloc(20*sizeof(int)),如果编译器默认int为4字节存储的话,那么计算结果是80Byte,一次申请一个80Byte的连续空间,并将空间基地址强制转换为int类型,赋值给指针p,此时申请的内存值是不确定的。(2)ca转载 2020-05-15 23:16:09 · 207 阅读 · 0 评论 -
合并两个有序链表
示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4方法一:递归法struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode* mergeTwo...原创 2020-03-29 11:51:24 · 86 阅读 · 0 评论 -
检测括号是否匹配
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。算法:初始化栈 S。 一次处理表达式的每个括号。 如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它。 如果我们遇到一个闭括号,那么我们检查栈顶的...原创 2020-03-27 22:46:33 · 1261 阅读 · 0 评论 -
查找字符串数组中的最长公共前缀
string longestCommonPrefix(vector<string>& strs){ if(strs.size() == 0) return ""; if(strs.size() == 1) return strs[0]; int len = strs.size(), min_val = INT_MAX;...原创 2020-03-25 23:00:22 · 1169 阅读 · 0 评论 -
32 位的有符号整数反转
123 -- 321-123 -- -321int reverse(int x) { if(x/10 == 0) return x; //平凡情况:若x∈[-9,9],则直接返回其本身 int y = 0; while(x) { if(y > INT_MAX/10 || y < INT_MIN/10) //...原创 2020-03-23 22:45:05 · 544 阅读 · 0 评论 -
判断一个正整数是不是完全平方数
我自己的解法,利用二分法:bool isPerfectSquare(int num){ if(num == 1) return true; int start = 2; int end = num; int mid; while(start <= end) { mid = start + (end -...原创 2020-03-22 21:51:03 · 2637 阅读 · 2 评论 -
二分法查找
int search(vector<int>& nums, int target){ if(nums.size() == 0) return -1; int left = 0; int right = nums.size() - 1; int mid; while(left <= right) { ...原创 2020-03-22 20:37:09 · 110 阅读 · 0 评论 -
使用位运算进行加法运算
int getSum(int a, int b){ if(a == 0) return b; if(b == 0) return a; int lower; //低位 int carrier; //进位 while(true) { lower = a ^ b; //计算低位,即无进位的加法的结果...原创 2020-03-22 17:06:59 · 830 阅读 · 1 评论 -
int类型的数字转换为十六进制数
string toHex(int num){ if(num == 0) return "0"; string res = ""; string hex[16] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "...原创 2020-03-22 14:59:08 · 12623 阅读 · 0 评论 -
给unsigned int类型的变量赋值负数会怎么样?
#include<iostream>using namespace std;int main(){ unsigned int a = -1; cout << a << endl; return 0; }// a=-1,输出为:4294967295// a=-2,输出为:4294967294// a=-3,输...原创 2020-03-22 14:28:15 · 9929 阅读 · 1 评论 -
自定义消息ON_MESSAGE()
MFC的自定义消息(用户消息)的定义与使用自定义消息的响应和资源消息的响应有很多类似之处;资源消息的响应是以资源的ID号作为标识的;自定义的消息要自己声明消息ID;一. 定义:第一步要声明消息:#define WM_MYMSG WM_USER+200第二步要在类声明中声明消息映射:DECLARE_MESSAGE_MAP()第三步要在类声明中定义消息...转载 2018-08-01 21:09:17 · 8688 阅读 · 0 评论 -
QString与string的相互转换
1.QString转换Stringstring s = qstr.toStdString();2.String转换QStringQString qstr2 = QString::fromStdString(s);原创 2019-05-28 22:39:58 · 1139 阅读 · 0 评论 -
Qt 获取文件夹下所有文件
QDir dir(path); QStringList nameFilters; nameFilters << "*.jpg" << "*.png"; files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);QStringList getFi...原创 2019-05-28 22:38:20 · 6643 阅读 · 0 评论 -
使用QLibrary加载动态库
使用QLibrary可以在程序运行时加载动态链接库。一个QLibrary的实例作用于一个单一的共享库上。QLibrary提供了一种平台无关的方式访问库中的函数。可以在构建QLibrary的实例时将要加载的库文件传入,也可以在创建实例后使用setFileName()显式的设置要加载的文件名。当加载库文件时,QLibrary会搜索所有平台特定的库位置,除非传入的文件名具有绝对路径。如果传入的文件名...原创 2019-05-28 22:36:52 · 567 阅读 · 0 评论 -
QListWidget中元素拖拽的设置方法
list->setMovement(QListView::Static);//禁止元素拖拽list->setMovement(QListView::Free);//元素可以自由拖拽list->setMovement(QListView::Snap);原创 2019-05-28 22:28:48 · 6379 阅读 · 2 评论 -
QThread: Destroyed while thread is still running错误解决方法
在主线程里面添加等待函数即可:subThread.wait();原创 2019-05-23 22:03:14 · 5944 阅读 · 1 评论 -
在qss中设置对象的属性及QToolButton图标
格式为:qproperty-property_name例如设置QToolButton的图标及图标大小:QToolButton{ qproperty-icon:url(pic.png); qproperty-iconSize:20px 20px;}注意:不能通过根据不同为状态(pressed、hover等)设置不同的图标,要想设置不同的图标,可同image代替。对...转载 2019-05-20 23:00:24 · 3270 阅读 · 1 评论 -
C语言获取文件夹内所有文件名并打印到txt中
#include <stdio.h>#include <io.h>//negative positiveconst char *to_search="G:\\*.txt"; //欲查找的文件,支持通配符FILE *fp; int main(){ long handle; ...原创 2019-05-28 22:44:20 · 4071 阅读 · 0 评论 -
Qt实现右键菜单的五种方法!(以QListWidget为例)
学习了Qt很久,下面总结了5种实现右键菜单的方法(以QListWidget为例):下面5种方法选其一即可.当然越简单越好啦!1.重写QListWidget的virtual void mousePressEvent(QMouseEvent *event);鼠标点击函数.2.重写QListWidget的virtual void contextMenuEvent(QContextMenuEv...转载 2019-05-28 22:48:47 · 2782 阅读 · 0 评论 -
c++ vector使用方法收集
一、在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1.基本操作(1)头文件#include<vector>.(2)创建vector对象,vector<int> vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始...转载 2019-05-28 23:06:40 · 17796 阅读 · 0 评论 -
QT5程序打包发布的方法
一、将现有的项目在QT Creater中用release方式编译二、打到项目生成的目录,我的是在E:\QTFile\build-calc_20180508-Desktop_Qt_5_8_0_MinGW_32bit-Release三、将release中生成的.exe文件拷贝到新的文件夹中,我在这里拷贝到了d:\test\中四、在QT安装菜单中找到QT5.8 for DeskTop工具...转载 2019-07-03 22:39:39 · 311 阅读 · 0 评论 -
Qt 从csv文件中读取数据
最近项目中提出的需求是从excel表格中导入数据,查阅了很多资料之后,发现直接操作xls格式文件并不容易,之后找到了一个比较好的解决办法,那就是把xls文件另存为csv文件,然后在程序中进行操作。首先大致说明一下这两种格式的区别:xls文件是Excel电子表格的文件格式,而csv是一种比较通用的文件格式,xls文件只能用Excel才能打开,而csv文件可以用Excel、记事本、文...原创 2019-07-03 23:02:16 · 10322 阅读 · 1 评论 -
C语言中常数和常量的区别
严格的说,C语言中用#define伪命令定义的对象称为常数,用const限定词定义并初始化的对象称为常量(相对于变量而言)。常数的值在编译时确定,常量的值则在运行时初始化后确定(不过此后只能作为右值使用)。...原创 2019-08-07 22:50:58 · 2697 阅读 · 0 评论 -
Linux下stricmp在此作用域中尚未声明解决办法
在使用大小写不敏感函数比较字符串时,很顺手的来了个stricmp,g++编译的时候:错误:‘stricmp’在此作用域中尚未声明。后来查了一下,stricmp是windows特有的。而linux是strcasecmp,包含在头文件string.h下。问题解决了...原创 2019-08-06 23:27:16 · 3254 阅读 · 0 评论 -
snprintf函数和sprintf函数的区别
sprintf函数无法检查目的缓冲区是否溢出,相反,snprintf函数要求第二个参数指定目的缓冲区的大小,因此可以确保该缓冲区不溢出。char buff[20];memset(buff, 0, 20);char *szTemp = "Hello World";snprintf(buff, sizeof(buff), "%s", szTemp);...原创 2019-08-11 17:16:03 · 1441 阅读 · 0 评论 -
QT5 解决中文显示乱码问题
解决方法有三种转换的方法:方法一:#include <qtextcodec.h>QTextCodec *codec = QTextCodec::codecForName(“GBK”);w.setWindowTitle(codec->toUnicode(“中文测试”));方法二:w.setWindowTitle(QString::fromLoca...原创 2019-05-20 22:58:08 · 685 阅读 · 0 评论 -
QT按钮下拉菜单
QPushButton *statusputton;QMenu *statusmenu;void Dialog::creatpushbotton(){ statusputton=new QPushButton(); statusmenu =new QMenu(); QAction *online=new QAction(statusmenu); QAction *chatme=n...原创 2019-05-20 22:53:20 · 3988 阅读 · 0 评论 -
如何取出一个字节的高4位和低4位
unsigned char low_four, high_four;high_four = (byte & 0xf0) >> 4;low_four = byte & 0x0f;原创 2018-11-20 23:08:44 · 24344 阅读 · 1 评论 -
如何取出一个字节中的任意位(bit)
方法一:#include <iostream>#include <math.h>using namespace std;int main(){ unsigned char c = 0x33; int b[8]; for(int i =0; i<8; i++) { b[i] = ((c & (un...原创 2018-11-20 23:05:04 · 16772 阅读 · 0 评论 -
两字节16进制值转换为int
有时候在报文中会碰到以两个字节来存出一个整型的数据,例如0x0080,将其重新转换成int的方法是:char a = 0x80;//低位char b = 0x00;//高位int value = (int)((unsigned char)a | (unsigned char)b<<8);//先将char转换为unsigened char,再进行位移和或操作 ...原创 2018-11-20 22:55:32 · 6040 阅读 · 0 评论 -
编译出现missing ‘,’ before '<classhead>'的错误
当出现这个错误时,往往所指向的语句并没有错误,而是它的上一句发生了错误。解决办法:1.上一语句末尾确实缺少分号,那么不上即可。2.如果发现发生错误的语句是cpp文件的第一行语句,在本文件中并没有检查到错误,但是本文件使用双引号包含了某个头文件,那么检查这个头文件,在这个头文件的尾部可能有错误。比如声明的struct,union等后面忘记添加 ‘;’。...原创 2018-10-27 11:24:53 · 5080 阅读 · 0 评论 -
VC6.0里面使用CArray
之前在VC6.0中用CArray,编译时可能会出现如下错误:error C2143: syntax error : missing ';' before '<'解决办法: 在stdafx.h文件中加入#include<afxtempl.h>即可。...原创 2018-10-27 11:10:28 · 922 阅读 · 0 评论 -
error BK1506: cannot open file '.\Debug\???????.sbr': No such filr or dire
解决方法: VC: 依次点击工程->设置->浏览信息,将创建浏览信息的复选框的勾去掉就可以了。 VS: 工程 -> 属性 -> C/C++ -> Browse Information -> Enable Browse Information 设置为NONE...原创 2018-10-27 10:54:01 · 1528 阅读 · 0 评论 -
c++ int与string的转换
int转化为string1、使用itoa(int to string)//char *itoa( int value, char *string,int radix);// 原型说明:// value:欲转换的数据。// string:目标字符串的地址。// radix:转换后的进制数,可以是10进制、16进制等。// 返回指向string这个字符串的指针int a = 3...转载 2018-08-13 21:33:54 · 705 阅读 · 0 评论