C++
Devere
C++开发
展开
-
智能指针C++
unique_ptr独占指针,只能通过move转移控制权shared_ptr共享指针(带计数)weak_ptr弱指针,解决循环引用不具有普通指针的行为,没有重载operator*和operator->没有共享资源,它的构造不会引起引用计数增加用于协助shared_ptr来解决循环引用问题可以从一个shared_ptr或者另外一个weak_ptr对象构造,进而可以间接获取资源的弱共享权。一个例子class alpha;class child {public: int val原创 2022-01-20 16:33:46 · 703 阅读 · 0 评论 -
一个函数指针的注册单例类
class RegisterClass {public: typedef string(*Creator) (const string); typedef map <string, Creator> CreatorResgister; static CreatorResgister& Registry() { static CreatorResgister* g_ = new CreatorResgister(); return *g_; }};一个函数指针类型原创 2022-01-20 16:17:10 · 806 阅读 · 0 评论 -
C++ 虚析构函数
如果去掉基类virtual字段,此时,派生类的析构函数没有被调用,造成内存泄漏。所以,基类的虚函数要定义成 virtual 的。这样,当一个基类的指针删除一个派生类对象时,派生类的析构函数会被调用。...原创 2019-01-31 17:44:36 · 216 阅读 · 0 评论 -
std::string 去除前后空格
void trimString(std::string & str ){ int s = str.find_first_not_of(" "); int e = str.find_last_not_of(" "); str = str.substr(s,e-s+1); return;}原创 2019-01-31 20:13:16 · 6912 阅读 · 0 评论 -
string 字符串替换
void StringReplace(string &str, string srcSubStr, string decSubStr){ int iPos = 0; while (str.find(srcSubStr, iPos) != string::npos) { iPos = str.find(srcSubStr, iPos); ...原创 2019-01-31 20:16:28 · 930 阅读 · 0 评论 -
修改windows系统鼠标样式
#include <windows.h>#include "WinUser.h"#pragma comment(lib, "User32.lib") //设置自定义鼠标样式 QString dirPath = QCoreApplication::applicationDirPath() + "/"; QString fullDirPath = dirPat...原创 2019-01-16 19:27:11 · 1579 阅读 · 3 评论 -
CString 转换为LPWSTR
(LPWSTR)(LPCWSTR)(cmdLine.c_str())//1、通过MultiByteToWideChar函数转换MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下:int MultiByteToWideChar( UINT CodePage, // code page DWORD dwFlags, // chara...原创 2019-02-12 14:57:24 · 4344 阅读 · 0 评论 -
(Qt) 获取系统详细版本号 OS Build
直接通过调用管道命令行,但是会有一个黑框(控制台)闪过#include <stdlib.h>#include <stdio.h>#include <iostream>using namespace std ;// 描述:execmd函数执行命令,并将结果存储到result字符串数组中// 参数:cmd表示要执行的命令// result是执行的结果...原创 2019-04-08 15:13:31 · 1877 阅读 · 0 评论 -
(Qt) 获取Nvidia driver Version 驱动版本
#define _WIN32_DCOM#include <iostream>using namespace std;#include <comdef.h>#include <Wbemidl.h>#include <string>#pragma comment(lib, "wbemuuid.lib")QString getNvidia...原创 2019-04-08 15:15:21 · 3382 阅读 · 2 评论 -
OpenCV图片格式转化
#include <opencv2/opencv.hpp> cv::Mat img = cv::imread("D:/satara_night_16k.hdr"); cv::imwrite("D:/satara_night_16k.jpg",img);原创 2019-04-16 10:03:25 · 2438 阅读 · 2 评论 -
OpenCV裁剪图片
std::string path = "D:/timg.jpg"; IplImage* pSrc = cvLoadImage(path.c_str(),1); CvSize size= cvSize(pSrc->height,pSrc->height);//区域大小 cvSetImageROI(pSrc,cvRect((pSrc->width-p...原创 2019-04-26 14:55:38 · 5235 阅读 · 0 评论 -
Qt ALT+F4响应
#include <QDebug>//MainWindow:public QMainWindowbool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result){ if (eventType == "windows_generic_MSG" || event...原创 2019-05-08 14:24:08 · 1586 阅读 · 0 评论 -
读取Nvidia驱动版本号
Solution 1读取注册表信息,不可取。很多电脑的注册表信息丢失不全。Solution 2通过dxgi读取显卡版本号。在台式机上正常,双显卡的笔记本电脑端,由于默认的显卡为核显,所以读取的为核显版本号。Solution 3通过调用命令行管道,执行Nvidia Driver目录下的exe,截取返回信息中的版本号#include <string>#include "Win...原创 2019-06-24 21:49:04 · 2183 阅读 · 0 评论 -
C++字符串处理 和 std::transform
例子:char exchange(char c){ if (c &lt;= 'Z' &amp;&amp; c &gt;= 'A') c = tolower(c); else if (c &gt;= 'a' &amp;&amp; c &lt;= 'z') c = toupper(c); return c;}tolower 转小写toupper 转大写原创 2019-01-31 17:37:00 · 723 阅读 · 0 评论 -
C/C++获取操作系统、CPU、内存信息、硬盘、IP和MAC(windows和linux)
https://blog.csdn.net/u012234115/article/details/71056957原创 2019-01-08 16:48:13 · 2148 阅读 · 0 评论 -
用sublime搭建一个微型C++/C编译器
Sublime64位下载地址https://download.csdn.net/download/u013288800/10584010该版本是免安装中文版。下载MinGW,官网下载即可。安装标记的那个g++编译库。右键—>Mark for Installation 然后左上角Installation—>Apply Changes—>Apply 配置...原创 2018-08-05 02:06:14 · 603 阅读 · 0 评论 -
error:crosses initialization of
Switch语句中引起的错误。原因是变量的作用域会作用于所有case只需要将引起错误的代码,用大括号包起来就可以了。原创 2018-08-06 16:40:06 · 723 阅读 · 0 评论 -
c++简单线程池实现
https://blog.csdn.net/lywzgzl/article/details/79341995原创 2018-08-13 16:25:07 · 282 阅读 · 0 评论 -
C++中string、char *、char[]的转换
string转char*。 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy(); 1.data()方法,如:string str = "hello";const char* p = str.data();//加const 或者用char * p=(char*)str.data();的形式 同时有一点需要说明,这里在d...原创 2018-08-23 13:38:48 · 131 阅读 · 0 评论 -
常见函式使用void指标传递参数的现象,以及一些看法
观察现象我几年来陆续在不同公司的不同人写出来的不同程式码里见到一种使用void *传递参数的现象。 合理状况下,我们在函式介面里加上void *参数多半是因为不知道使用者欲传入的资料型态为何? 例如标准函式库里的memset、memcpy等,但让我看到的程式码都不是这种! 下面我用一个简单的范例来描述我所看到的状况://这是函式的宣告,位在某个h档。//虽然我不喜欢匈牙利命名法,但...原创 2018-09-07 22:16:28 · 2269 阅读 · 0 评论 -
C++读写ini配置文件
配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件:BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpString, /...原创 2018-09-11 14:54:02 · 30355 阅读 · 7 评论 -
error: C2664: “UINT GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR)”
.pro文件添加DEFINES -= UNICODEDEFINES += UMBCS执行qmake构建即可设置当前工程为多字节字符集原创 2018-09-11 15:36:52 · 681 阅读 · 0 评论 -
C++获取GPU显卡信息
//#include &lt;Windows.h&gt; #include &lt;iostream&gt; #include &lt;DXGI.h&gt; #include &lt;vector&gt; //using namespace std;std::string WStringToString(const std::wstring &am原创 2018-09-08 15:18:50 · 11511 阅读 · 3 评论 -
C++11 中std::function和std::bind的用法
https://blog.csdn.net/liukang325/article/details/53668046转载 2018-09-06 15:06:55 · 139 阅读 · 0 评论 -
C/C++调试 文件名 行号 变量名
#include&lt;stdio.h&gt;#define DEBUG_INFO(X) std::cout&lt;&lt;__FILE__&lt;&lt;" "&lt;&lt;__LINE__&lt;" "&lt;&lt;X&lt;&a原创 2018-09-06 23:03:26 · 548 阅读 · 0 评论 -
C++对文件进行读写操作
C++对文件进行读写操作原创 2018-09-10 22:21:46 · 488 阅读 · 0 评论 -
STL的使用方法(很全)
https://blog.csdn.net/sinat_35866463/article/details/76523216原创 2018-09-22 01:39:57 · 2467 阅读 · 0 评论 -
Boost:shared_memory_object --- 共享内存
Boost:shared_memory_object — 共享内存原创 2018-10-27 20:48:36 · 782 阅读 · 0 评论 -
std::function bind,lambda
C++11新特性之std::functionC++通过bind,lambda表达式等实现简单的异步函数调用模型C++11 lambda表达式在for_each和transform算法下的使用原创 2018-11-12 16:19:07 · 219 阅读 · 0 评论 -
Qt中使用lambda表达式
基本语法简单来说,Lambda函数也就是一个函数,它的语法定义如下:复制代码 代码如下:[capture](parameters) mutable ->return-type{statement}1.[capture]:捕捉列表。捕捉列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。编译器根据该引出符判断接下来的代码是否是Lambda函数。捕捉列表能够捕捉...转载 2018-07-24 20:09:43 · 2037 阅读 · 0 评论