![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
搁浅的渔
这个作者很懒,什么都没留下…
展开
-
C++ 代码覆盖率分析工具
它将特殊的检测指令插入到预处理的源代码中,然后使用原始编译器编译修改后的代码。报告中包含了整个项目的覆盖率数据,各个文件的覆盖率,以及各个文件的代码行级的覆盖情况。其中MySourcePath是要检测的项目的源文件目录,YourProgram.exe是编译好的准备进行检测的项目可执行文件,最后可以添加检测的目标程序运行的参数。在编译之后,可以像往常一样运行检测的可执行文件(并且可以通过访问它们的程序使用检测的库或插件),但是现在,当程序终止时,生成执行报告(.csexe文件)。找到可以消除的冗余测试。原创 2022-09-06 18:05:53 · 2496 阅读 · 0 评论 -
c++简单版线程池
#ifndef THREAD_POOL_H#define THREAD_POOL_H#include <vector>#include <queue>#include <memory>#include <thread>#include <mutex>#include <condition_variable>#include <future>#include <functional>#incl原创 2022-01-07 17:58:57 · 81 阅读 · 0 评论 -
ERROR:C2678 二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)
【1】复现问题为了更精确的分析,先用最简单的示例复现此错误场景,代码如下:#include <map>#include <string>struct Section{ int id; std::string code; bool operator<(const Section& rhs) { return id < rhs.id; }};int main(){ std::map&原创 2021-12-28 09:36:36 · 4786 阅读 · 0 评论 -
c++ 小技巧总结
1:改变控制台输出的文本格式,特别是中文编码的问题,转换成UTF-8 system("chcp 65001"); system("cls");2:改变当前文件索引路径(改为运行文件路径)#include <direct.h> //需要包含这个文件// change current run path std::string rootPath = "";#ifdef WIN32 char* buf = _getcwd(nullptr, 0); if (buf) { roo原创 2021-12-01 14:11:19 · 580 阅读 · 0 评论 -
c++ 11读写锁
参考:C++中的RAII_一蓑烟雨任平生 也无风雨也无晴-CSDN博客C++11实现模板化(通用化)RAII机制_10km的专栏-CSDN博客_c++11 raii无锁编程:c++11基于atomic实现共享读写锁(写优先)_10km的专栏-CSDN博客raii.h#include <type_traits>#include <functional>namespace gyd { /* 元模板,如果是const类型则去除const修饰符 */ templat原创 2021-11-17 15:43:14 · 3216 阅读 · 0 评论 -
c++定时器
记录一下,防止忘记定时器timer是多线程编程中经常设计到的工具类定时器的原理其实很简单:创建一个新线程 在那个线程里等待 等待指定时长后做任务这里用C++11实现了一个简单易用的定时器,包含两种模式:周期性定时任务执行 单次延时任务执行#ifndef _TIMER_H_#define _TIMER_H_#include <functional>#include <chrono>#include <thread>#include &l转载 2021-07-30 20:04:44 · 10950 阅读 · 2 评论 -
c++判断字符串是否有中文
C/C++ -- 判断字符串中存在中文电脑系统中的英文字符串和中文字符最根本的区别就在于:1、英文的 ASCII 码,其最高位为 0,占一个字节注:英文的ASCII码范围是在0到127,二进制为(0000 0000 ~ 0111 1111)2、中文的 ASCII 码,其最高位为 1。占两个字节,注:两个字节的最高位都是1因此可以看出,可以拿字符串中的每个字节和ASC||的最高位也就是0x80(1000 0000)比较,如果一开始并且有两个连续的字符比0x80大,那么这两个字符合在一起原创 2021-07-02 10:18:14 · 8947 阅读 · 1 评论 -
c++ 判断gbk或者utf-8编码,然后互转
#include <iostream>#include <string>#include <string.h>#include <stdlib.h>using namespace std;int preNUm(unsigned char byte) { unsigned char mask = 0x80; int num = 0; for (int i = 0; i < 8; i++) { if ((byte & mas.原创 2021-06-29 18:27:31 · 1517 阅读 · 0 评论 -
C++定义错误码类
我们平时有这样的需求,可能是C用户的老习惯了,在底层的组件中更喜欢用返回错误码的形式来告知用户函数的调用状态,一般来说,简单用#define 一个宏来包装下返回值。#define ERR_SYSTEM_INIT -23 // system initailized fail比如,以上定义了一个错误码返回-23,意味着系统初始化失败。但是宏包含的信息太少,有些时候,用户不能如人意的理解错误原因。必须给这错误加以说明。所以就索性写了一个Error类可以定义错误码和相关错误信息,并通过错误码返回更详细的说明原创 2021-06-29 18:24:35 · 1396 阅读 · 0 评论 -
C++回调函数使用心得
前言关于C++回调函数的介绍网上有很多,要知道它的概念很容易,难的是灵活应用,这里就笔者遇到的一个使用场景对回调函数进行一个简单的介绍,如果能对您有所帮助是我的荣幸。本文不会对C++回调函数的基础知识做过多的介绍,若对其概念不够理解的,笔者在此推介两篇个人认为相当优秀的博客。链接:https://blog.csdn.net/hellozex/article/details/81742348回调函数也是普通函数回调函数也是普通函数首先明确一个概念,回调函数也是普通函数,而不是什么神秘的东西..转载 2021-04-14 11:40:03 · 156 阅读 · 0 评论 -
spdlog的使用
参考文章:log库spdlog简介及使用 - 网络资源是无限的 - CSDN博客http://blog.csdn.net/fengbingchun/article/details/78347105spdLog的使用 - 烟消bug云散的专栏 - CSDN博客http://blog.csdn.net/yanxiaobugyunsan/article/details/79088533官方参考文档: QuickStart · gabime/spdlog Wiki · GitHubhttps:/..原创 2021-04-12 16:42:15 · 1103 阅读 · 0 评论 -
c++如何遍历删除map/vector里面的元素
新技能Get!问题对于c++里面的容器, 我们可以使用iterator进行方便的遍历. 但是当我们通过iterator对vector/map等进行修改时, 我们就要小心了, 因为操作往往会导致iterator失效, 之后的行为都变得不可预知. 比如:#include <iostream>#include <vector> using namespace std; int main(){ vector<int> a = {12, 23, 3原创 2021-04-12 15:38:22 · 1516 阅读 · 1 评论 -
error C4996: ‘sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead. T
error C4996: ‘sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Visual Studio 2012诸如此类的问题[html] view plaincopy原因是Visual C++ 2005使用了更加安全原创 2021-03-22 14:02:57 · 12041 阅读 · 1 评论 -
QT出现“查找/添加槽错误”解决方法
出现The class containing "Ui::MainWindow" could not be found in E:\QTproject\osgProjects\2020_810_DEMO\mainwindow.hE:\QTproject\osgProjects\2020_810_DEMO\Function.h.Please verify the #include-directives.1.类似错误,重启qt Creator可解决。2.重启解决不了就要从源头解决,这个报错是原创 2021-01-04 16:04:53 · 4199 阅读 · 0 评论 -
虚函数和纯虚函数的详解
转自:https://mp.weixin.qq.com/s?__biz=MzAxNzYzMTU0Ng==&mid=2651289202&idx=1&sn=431ffd1fae4823366a50b68aed2838d4&chksm=80114627b766cf31f72018ef5f1fe29591e9f6f4bd72018e7aea849342ca6f0a271fb38465ae#rd学习C++的多态性,你必然听过虚函数的概念,你必然知道有关她的种种语法,但你.转载 2020-10-23 13:28:35 · 1415 阅读 · 0 评论 -
C++中两个类相互包含引用问题
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型class A{int i;B b;}class B{int i;A* a;}请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即如下的样子:class A{int i;B b;}class B{int i;A a;}在这种情况下,想想能够有a.b.a.b.a.b.a.b.a.b…………,很有点子子孙孙无穷尽之.原创 2020-09-24 16:45:24 · 1103 阅读 · 0 评论 -
ifstream中文路径
最近维护一个项目,遇到了ifstream在中文路径下打开文件失败的bug,我搜索了一下,最后整理成下文以后日后查阅。一、问题重现vs2008下创建一个简单win32工程。 使用ANSI编码方式:项目属性页->配置属性->常规->项目默认值->字符集中选择"使用多字节字符集"。 简单出错代码: #include "stdafx.h"#include <Windows.h>#include <fstream> int _tmai...原创 2020-08-27 16:09:18 · 2079 阅读 · 0 评论 -
QT中QLineEdit的editingFinished()信号在按下回车时会触发两次的解决办法
之所以会进两次槽函数,是因为响应enter键一次,以及焦点离开时又一次,不过两次进入时状态是不一样的,一次焦点还在QLineEdit上,一次已经不在了。解决方法有:1、通过判断焦点是否还在QLineEdit上加以区分/*添加QLineEdit的槽editingFinished当回车按下时editingFinished()槽第一次响应enter键,此时焦点在QLineEdit上,响应完失去焦点第二次响应焦点离开事件,此时焦点已经不在QLineEdit上故通过if(ui->...原创 2020-07-23 17:13:20 · 2505 阅读 · 0 评论 -
vs2012 二进制“==”: 没有找到接受“...”类型的左操作数的运算符(或没有可接受的转换)
编译的时候遇到这个原因:我用的是qt的QVector,再用其中的removeALL函数的时候,他的参数是const的类型的,报的错误;解决:换成removeOne解决原创 2020-07-17 14:06:54 · 1435 阅读 · 0 评论 -
Qt release 打印日志在cmd中,像debug模式一样
在pro文件中加CONFIG += consolerelease || debug下,会把debug的日志,打印到这样的窗口上面:原创 2020-07-14 16:41:26 · 879 阅读 · 0 评论 -
QSpacerItem的大小控制
在使用Qt进行UI设计的时候会用到QSpacerItem控件,QSpacerItem就是一个伸缩器,在Qt Designer中是这两个控件。有时界面在响应某些操作后会涉及到Spacer大小的控制。可以使用QSpacerItem的公共函数来控制其大小,但是使用这个函数后并不会生效(除非是窗口构造函数中执行会生效一次)。还需要执行一个操作void QLayoutItem::invalidate ()才可以令改动生效。这需要QSpacerItem所在的布局来执行,如果QSpacerIt.原创 2020-07-13 10:01:04 · 701 阅读 · 0 评论 -
QT 鼠标形状设置问题
QT提供了十分便捷的设置鼠标形状的方法,在QT界面的根类QWidget中有QCursor cursor(); void setCursor(QCursor &); void unsetCursor()三个方法,因而对于一切直接或间接继承自QWidget的控件都可以设置鼠标进入控件范围的鼠标形状。其次,就QCursor类而言,QT提供了两种类型的鼠标形状:其一是内置鼠标形状(如下)【例如setCursor(Qt::ArrowCursor)设置鼠标为箭头形状】...原创 2020-07-09 14:27:15 · 3781 阅读 · 2 评论 -
qt QLineEdit的几种输入限制,备自己查阅
QRegExp rx("[a-zA-Z0-9][a-zA-Z0-9.-]+$");/*限制第一位只能输a-zA-Z0-9,之后只能输入a-zA-Z0-9.-这几类字符*/ QValidator *vali=new QRegExpValidator(rx,ui.lineEdit_host1); ui.lineEdit_host1->setValidator(vali);...原创 2019-04-17 17:17:37 · 1177 阅读 · 0 评论 -
Qt获取IP地址、用户名、机器名、MAC地址
获取ip地址[cpp]view plaincopy // 获得ip地址 QString USBMainUI::getIpAdress() { QString localIPAddress = ""; QList<QHostAddress>listAddress = QNetworkInterface::allAddre...转载 2019-04-17 17:41:40 · 690 阅读 · 0 评论 -
c++基础学习之动态数组
最近新到公司,带教老师让我写动态数组,哇,给我的感觉真的是,底层的东西,要求性能和代码规范比较严,下面是代码。我会写很详细的注释,方便以后自己观看。希望各位请教了。MyArray.h#ifndef MYARRAY_H#define MYARRAY_H#include <iostream>//函数后面加const表示函数不改变类中的成员变量//参数里面加cons...原创 2019-06-13 15:40:56 · 464 阅读 · 0 评论 -
C++打开文件的方式
一般情况下,再打开一个指定文件时会有两种情况(1) 文件不存在。(2) 文件存在。对于第一种情况,ofstream类的对象会默认自动创建一个同名文件;而第二种情况下,ofstream类的对象会默认将该文件的内容删除,问数据输出到该文件做好准备。假如不想使用上面的默认的打开方式,我们可以用oftream或者ifstream对象的构造函数或者open()函数指定一种打开方式,首先来看一...转载 2019-06-10 15:04:57 · 12570 阅读 · 0 评论 -
c++11特性,lambda表达式
首先引用百度百科里面的内容:Lambda表达式编辑讨论“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。闭包编辑讨论10...原创 2019-07-26 15:47:44 · 199 阅读 · 0 评论 -
c++string与wstring互转,Unicode与UTF-8互转,字符串替换,大小写字母转换
sting转wstringstd::wstring AnsiToUnicode(const std::string& strA) { int unicodeLen = ::MultiByteToWideChar(CP_ACP, 0, strA.c_str(), -1, NULL, 0); if (unicodeLen <= 0) ...原创 2019-10-09 18:09:19 · 881 阅读 · 0 评论 -
c++设计模式
本文转自 https://blog.csdn.net/liang19890820/article/details/66974516 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011012932/article/details/66974516设计模式设计模式(Design Pattern)代表了最佳的实践,在面向对象...转载 2019-01-28 10:11:44 · 141 阅读 · 0 评论