C++学习
学习与实践
时光有影
这个作者很懒,什么都没留下…
展开
-
如何清理QMap中Qlist里面的指针
如果您想要清理一个 QMap 中 QList 中的指针,您可以遍历 QMap 的所有元素,然后对于每个 QList,您可以使用 qDeleteAll() 函数来删除它的所有元素,然后使用 clear() 函数来清空 QList。在这个示例代码中,MyClass 是一个自定义的类,您需要根据您的实际情况将其替换为您需要的类名。原创 2023-04-13 15:13:40 · 1929 阅读 · 0 评论 -
std::list 与迭代器
list遍历原创 2022-08-18 15:11:13 · 1294 阅读 · 0 评论 -
VS监控UTF8编码变量显示为”字符串中的字符无效“
【场景】最近将一个项目(采用VS2017+QT5.12.9)的编码全转为UTF-8,结果采用VS监控变量发现显示为“无效字符串",查看内存发现有数据。【解决】面向百度编程~~~,发现问题如下:原创 2022-05-06 10:06:08 · 968 阅读 · 1 评论 -
QT转VS出现“未对象引用设置到对象的实例”错误
场景:办公室采用联合开发模式,其他同事采用QT(版本为5.12.9),我采用VS(版本为VS2017)+QT平台编译。碰到问题如下:代码在QT平台编译且运行正常,但采用VS中插件Qt VS Tools的Open QT Project File打开.pro文件转成VS平台时弹出“未将对象引用设置到对象的实例”。我第一反应是最近提交的代码有问题导致(因为之前代码,我从QT转VS正常)。然后我下拉以前正常的代码,转的过程中发现同样存在该问题!!!问题排查:1、首先问百度,以下方法均试过,没用(可能我不是那原创 2021-10-19 09:32:13 · 5773 阅读 · 3 评论 -
由编码问题导致:error C2065、C2181、C2143、C2059等
问题场景说明:联合办公期间,同事提交的代码,我无法通过编译(平台为VS+QT)。提示问题如下图所示:问题原因排查:点击错误提示转到代码,发现以下问题定位出代码没有任何问题,但错误处代码提示处周围(前/后)都有注释。采用Noteped++工具打开该cpp文件和其他正常程序cpp文件,发现有编译错误的cpp文件为Unix(LF)格式,正常为cpp文件为Windows(CR LF)格式。原UTF-8编译错误cpp如图所示。但转换为ANSI码编码格式后,如图所示原因分析:怀疑注释处的LF原创 2021-09-18 17:01:08 · 1296 阅读 · 0 评论 -
VS+QT,F5运行时出现This application failed to start because no Qt platform plugin could be initialized。
问题场景说明:1、之前一直采用QT Creator平台进行编码,由于需要在Release模式下进行断点调试,QT转到VS+QT平台上。注:QT Creator也可以通过在.pro文件增加相关设置实现Rlease下调试。但本人调试时发现很多奇怪问题,如打点打不上、打上的地方代码执行了但不中断等。所以转为VS中进行调试。2、通过VS插件QT VS Tools->QT Versions设置QT版本;通过QT VS Tools->Open QT Project File(.pro)打开项目.pro原创 2021-09-13 10:27:10 · 1278 阅读 · 0 评论 -
绘图:BITMAP和DIB区别
1,BITMAP 即位图。 (位图位图,位上的图。图的信息以位保存)TMAP由四部分构成:位图文件头,位图信息头,调色板,和位图信息。 关于它们的详细信息及作用可参考相关资料,位图创建时,以从下至上的顺序扫描光栅,遍历每一位的信息(这些信息包含上述四结构,色彩等等)。 最终效果就是显示的图形,每相素都包含了位信息——OK,注意这句话,当你显示器分辨率变化时,你可以注意到你桌面所有东西大小都变了,因...转载 2020-03-28 15:22:45 · 3122 阅读 · 0 评论 -
TCP-socket发送结构体类型数据
UDP传输模式是数据报;TCP传输模式为字节流。字节流与数据报区别在于有边界与无边界。例如:TCP客户端发送了三个数据包,开的缓存足够大服务端一次可接收三个数据包的数据,这就是无边界。UDP客户端发送了三个数据包,就算开的缓存足够大服务端一次也只能接收一个数据包,这就是有边界。还有就是协议会维护源地址和目的地址直到协议要求断开连接,这就决定了TCP不能进行广播和多播。如何使用TCP发送结构体...转载 2020-03-20 12:33:39 · 2507 阅读 · 1 评论 -
Qt 添加 QtNetwork 库文件
Qt 添加 QtNetwork 库文件Qt应用程序默认没有加QtNetwork库。如下图:在开发过程中,因处理业务需要手动添加QtNetwork库。根据常见情况分为以下两种:【1】若使用QTCreator开发程序在工程的pro文件中添加:QT += network【2】若使用VS + QT开发程序本地环境VS2017 + QT5.9.2 编译错误提示如下: 1 error LNK2...转载 2020-03-19 18:32:51 · 1440 阅读 · 0 评论 -
C++ 基本原理
1、从文本变成可执行程序。主要分为两步,一步为编译(compiling),一步为链接(linking)。两种情况,一种是如果每个cpp文件都是独立的,不互相包含(include)。则VC++作为IDE(集成开发环境),首先对每个cpp文件进行编译(编译生成.obj文件),然后Build项目后通过Linker(链接器)将众多.obj文件串起来,生成一个exe或lib。另一种,如果一个cpp文件包含了...原创 2020-03-03 17:08:05 · 1867 阅读 · 0 评论 -
替换字符串
**// 将名字".txt"替换为".bin"(方法一)**int indexLeft = m_strNameLeft.lastIndexOf(".");int indexRight = m_strNameRight.lastIndexOf(".");m_strNameLeft = m_strNameLeft.left(indexLeft) + ".bin";m_strNameRight...原创 2020-01-16 10:41:23 · 132 阅读 · 0 评论 -
foreach循环
foreach循环首先说一下foreach有的也叫增强for循环,foreach其实是for循环的一个特殊简化版。再说一下foreach的书写格式:for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){语句}foreach虽然是for循环的简化版本,但是并不是说foreach就比for更好用,foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更...原创 2020-01-16 10:05:25 · 221 阅读 · 0 评论 -
QT 获取exe所在目录
获取exe所在的目录欢迎使用Markdown编辑器欢迎使用Markdown编辑器string GetExePath(){TCHAR szFilePath[MAX_PATH + 1] = { 0 };GetModuleFileName(NULL, szFilePath, MAX_PATH);(_tcsrchr(szFilePath, _T('\\')))[1] = 0;return...原创 2020-01-16 09:34:26 · 1987 阅读 · 0 评论 -
C++学习
1、C与C++区别C是面向过程,C++面向对象。思路:任何事物都可以看做一个对象,如果觉得负责,可分解为多个对象。对象又具有其属性和行为。C++可以在任意位置进行变量初始化2、命名空间using namespace std作用:C++主要用来开发大型项目,会又很多人编写。不同人编写的模块,可能会命名重复,可以通过命名空间,将个人些的变量和函数名约束在该空间内。如:电脑的不同的两个文件夹...原创 2019-10-30 22:14:49 · 874 阅读 · 0 评论