C/C++
__网瘾少年
心之所向 素履以往 生如逆旅 一苇以航
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
qt 中 qwidget 嵌入 qml
qt 中 qwidget 嵌入 qml原创 2022-11-16 23:57:47 · 1838 阅读 · 2 评论 -
C#与C++数据类型转换
c++:HANDLE(void *) ---- c#:System.IntPtr c++:Byte(unsigned char) ---- c#:System.Byte c++:SHORT(short) ---- c#:System.Int16 c++:WORD(unsigned short) ---- c#:System.UInt16 c++:INT(int) ---- c#:System.Int16.原创 2022-04-26 16:00:38 · 2229 阅读 · 0 评论 -
C++ 调用java中的方法(class文件)
#include "jni.h"#include <windows.h>#include <Shlwapi.h>#include <string>#include <string.h>#include <wchar.h>#include <iostream>using namespace std;#pragma comment(lib,"Shlwapi.lib") HINSTANCE jvmdll = NULL;.原创 2022-04-06 15:53:00 · 1288 阅读 · 0 评论 -
C++ 通过返回值的类型来确定调用哪个函数
class SqlObj final{public:template < typename Fn, typename... Args, typename = typename std::enable_if < std::is_assignable < std::function<typename std::result_of<Fn(Args...)>::type(Args...)>, typename std::.原创 2022-04-06 14:39:26 · 466 阅读 · 0 评论 -
关于windows 在 Program Files (x86) 中,软件对该目录中的文件操作权限不够的解决方案
方案一:把软件执行权限为管理员权限添加 uac.manifest 文件,内容如下<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm....原创 2022-02-28 17:17:31 · 4366 阅读 · 0 评论 -
WebAssembly (web端调用c++的dll)
WebAssembly (web端调用c++的dll)原创 2021-12-24 10:14:31 · 3627 阅读 · 1 评论 -
C++API 中文文档
https://www.apiref.com/cpp-zh/cpp/concepts.html原创 2021-06-05 16:50:53 · 1247 阅读 · 0 评论 -
C++ explicit
class Obj { public: Obj(int a, int b) { _a = a; _b = b; } Obj(int a) { _a = a; } //explicit Obj(int a) //{ // _a = a; //} private: int _a; int _b; }; void fun(Obj o) { }int main(){ Obj oo = { 12 };//Obj{12} Ob..原创 2021-06-05 13:47:58 · 128 阅读 · 0 评论 -
C++ 设计模式:单例
template<typename T>class Singleton{public: template<typename ...Args> static std::shared_ptr<T> GetInstance(Args&&... args) { if (nullptr == m_pSington) { std::lock_guard<std::mutex> gLock(_mutex); if (null.原创 2021-05-16 17:32:43 · 234 阅读 · 0 评论 -
C++ 设计模式: 观察者模式
#ifndef H_OBSERVER_H#define H_OBSERVER_H#include <iostream>#include <list>using namespace std;class Observer{public: virtual void Update(int) = 0;};class Subject{public: virtual void Attach(Observer*) = 0; virtual vo.原创 2021-05-15 23:25:10 · 165 阅读 · 0 评论 -
C++ 通过一个字符串来创建一个已有的类对象
#include <iostream>#include <string>#include <map>using namespace std;typedef void* (*pCreateObject)(void);class ClassFactory{private: map<string, pCreateObject> m_classMap; ClassFactory() {};public: void* CreateObjectB.原创 2021-04-05 18:58:34 · 649 阅读 · 0 评论 -
Qt 用QScrollArea + QGridLayout 彷真一个listwidget(增加item时自动滚动到底部)
大概效果如上图相关代码部分如下所示Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); init(); connect(scrollArea->verticalScrollBar(), &QAbstractSlider::rangeChanged, this, &Widget::slider)...原创 2021-04-04 21:53:00 · 1597 阅读 · 0 评论 -
C++ 学习 运算类
原创 2021-03-14 20:27:46 · 143 阅读 · 0 评论 -
c++ (简单实现 list 与 find_if)
#include <iostream>#include <utility>using namespace std;namespace mylist{ template<typename T> struct list_node { explicit list_node(const T& x):data(x), next(nullptr), prev(nullptr) { } list_node* prev; list_n.原创 2021-03-07 17:30:20 · 569 阅读 · 0 评论 -
C++ 学习 (tuple)
#include <iostream>#include <utility>using namespace std;namespace tp1{ template<typename T, typename U = std::void_t<>> struct HasMemFunc : std::false_type { }; template<typename T> struct HasMemFunc<T, std::v.原创 2021-03-07 01:05:40 · 330 阅读 · 0 评论 -
c++模版学习(typelist)2021-03-05
namespace tplt{ //基本的操作接口 template <typename ... T> class typelist { }; template <typename TPLT> class front; template <typename fisrt, typename ...other> class front<typelist<fisrt, other...原创 2021-03-05 18:04:06 · 261 阅读 · 0 评论 -
C++ (策略)
#include <iostream>using namespace std;namespace _nmsap1{ template<typename T> struct SumFixedTraits; template<> struct SumFixedTraits<char> { using sumT = int; static sumT initValue() { return 0; } }; template<&.原创 2021-01-16 23:06:21 · 871 阅读 · 1 评论 -
组合 与 委托
组合中(类)包含一个实体对象,委托中(类)包含的是一个指针原创 2020-10-04 16:29:31 · 358 阅读 · 0 评论 -
vs 程序退出时检测内存泄漏并显示到“输出”窗口
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);//程序退出时检测内存泄漏并显示到“输出”窗口原创 2020-10-02 22:58:03 · 416 阅读 · 0 评论 -
C++ remove_all_extents
remove_all_extents C++11中引入的类型模板,把一个数组中的数组类型部分移除掉,只保留元素类型部分。int b[5][8]cout<<typeid(std::remove_all_extents<decltype(a)>::type).name()<<endl;// float//实现: template<class _Ty> struct remove_all_extents { // remov...原创 2020-10-01 17:25:00 · 562 阅读 · 0 评论 -
C++泛型编程学习 std::function
void test(int var){ cout << var <<endl;}void calltest(function<void (int)> fun){ fun(120)};eg: calltest(test); calltest([](int var)->void{ cout<< "lambda ===" << var << endl;}).原创 2020-09-06 21:58:04 · 430 阅读 · 0 评论 -
C++泛型编程学习 std::conditional
eg:std::conditional<true, T, U> //第一个true, 那个么 std::conditional<true, T, U>::type 为Tstd::conditional<true, T, U>//第一个false, 那个么 std::conditional<true, T, U>::type 为Ueg:int j = 10std::conditional<(j>100), int, .原创 2020-09-06 20:54:51 · 1439 阅读 · 2 评论 -
C++泛型编程学习 std::declval void_t
//判断是否有这种类型#define _HAS_TYPE_MEM_(parMTpNm)\template<typename T, typename U = std::void_t<>>\struct HTM_##parMTpNm: std::salse_type{}; \template<typename T>\struct HTM_##parMTpNm<T, std::void_t<typename T::parMTpNm>>:std.原创 2020-09-06 20:55:19 · 1242 阅读 · 0 评论 -
C++ 笔记 奇异递归模板模式(模板编程手法:把派生类作为基类的模版参数, 混入)
//在基类中调用子类的方法template <typename T> class base { public: void test() { //在基类中用派生类对象 T& obj = static_cast<T&>(*this); obj.pf();//在基类中调用子类的方法 } private: base() {}; friend T;//防止子类中写错 }; //template<typename...原创 2020-06-02 22:39:31 · 714 阅读 · 0 评论 -
C++笔记 (可变参模版参数包展开)
/////////////////////////////////////////////////////////////////////////////折叠表达式左折:参数从左侧开始计算右折:参数从右侧开始计算template <typename ...T> auto add_val(T...arg) { return (... + arg);//一元左折 } template <typename...T> auto sub_val_left(T...ar.原创 2020-06-02 21:25:16 · 650 阅读 · 0 评论 -
C++笔记(类模版)
//模版类中有模版函数偏特化, 有模版泛化, 全特化, 重载//模版函数调用优先级: 全特化, 特化, 泛化//泛化template <typename T,typename U>struct TC{ TC() { cout << "TC泛化版本构造函数" << endl; } void functest1() { cout << "functest1泛化版本" << endl; } static int m_.原创 2020-06-02 19:10:59 · 251 阅读 · 0 评论 -
c++ 笔记(函数模版)
//编译期间, 生成对应的Sub<int>和Sub<double> (eg)template <class T> T Sub(T tv1, T tv2){ return tv1 + tv2;}template <typename T, typename U>//auto Add(T tv1, U tv2) //auto用于表达推导返回值类型的含义。auto Add(T tv1, U tv2) -> decltype(tv1 +.原创 2020-06-02 18:30:51 · 257 阅读 · 0 评论 -
粘包 少包
粘包发送端 发送数据 >接收端 接收的数据 造成接收端缓存溢出 发送端无法发送数据 网络阻塞这个缓冲区是操作系统底层实现的解决办法:我们尽可能的把缓冲区的数据读取出来, (用我们自己的代码把,缓冲数据读取到我们自己的buf里面);少包发送的消息不足以是一个消息数据包(收到的消息 < 定义数据包的长度)定义一个足够大的buf,如果...原创 2020-04-20 00:22:19 · 355 阅读 · 0 评论 -
client加select模型
为什么客户端要加select模型:在没有加上select模型时,客户端(C)与服务端(S)只能是 C发数据到S然后, S->C;如果中途服务端想另外发送数据,通知客户端做些什么,客户端是不可以接收的,所以客户端加上select模型,就可以了...原创 2020-04-18 20:42:29 · 395 阅读 · 0 评论 -
为什么部分windows程序 要提权操作
在枚举/结束系统进程或操作系统服务时,会出现权限不足而失败的情况,这时就需要提升自己进程到系统权限windows的每个用户登录系统后,系统会产生一个访问令牌(access token),其中关联了当前用户的权限信息,用户登录后创建的每一个进程都含有用户access token的拷贝,当进程试图执行某些需要特殊权限的操作或是访问受保护的内核对象时,系统会检查其acess token中的权限信息以...转载 2020-03-09 20:35:15 · 555 阅读 · 0 评论 -
Qt 的 base64 位编解码
QString 到 base64QByteArray text = src.toLocal8Bit();QByteArray by = text.toBase64();base64 到 QStringQByteArray text = src.toLocal8Bit();QByteArray by = text.fromBase64(text);QString str = Q...原创 2020-03-08 22:17:41 · 877 阅读 · 0 评论 -
Qt 在登录过程中加一个界面(程序启动画面)
在登录过程中加一个界面(程序启动画面)QSplashScreen splash(pixmap);splash.show();//要做的事情, 比如说初始化一系的代码啊MainWindow w;w.show();splash.finish(&w);...原创 2020-03-02 21:43:29 · 786 阅读 · 0 评论 -
C++ 线程池
最近看到一个线程池,感觉很骚气,记录一下#ifndef H_THREAD_POOL_H#define H_THREAD_POOL_H#include <vector>#include <queue>#include <memory>#include <thread>#include <mutex>#include...转载 2020-02-26 15:13:03 · 248 阅读 · 0 评论 -
OD 中 MFC 窗口回调函数定位
瞎几吧写winClass 中包含了回调函数的地址, 这个地址在结构体中第二个RegisterClass 参数是一个指针, 而这个参数中的第二个成员就是我们要找的回调函数的地址, fllow in dis(进入回调函数中, 下一个断点) 在当前断点中下一个消息断点;B -> edit condition [esp+8] == 消息ID 条件...原创 2019-05-19 15:44:54 · 1119 阅读 · 0 评论 -
windows C/C++ 线程创建
创建线程 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全属性 通常为NULL SIZE_T dwStackSize, // 参数用于设定线程可以将多少地址空间用于它自己的堆栈 // 每个线程...转载 2019-05-20 01:03:03 · 1634 阅读 · 0 评论 -
windows C/C++ 线程安全(一)临界区
承接上面一篇讲了线程创建部分:https://blog.youkuaiyun.com/uVarAndMethod/article/details/90358925临界区的使用 1、创建CRITICAL_SECTION: CRITICAL_SECTION cs; 2、在使用前进行初始化 InitializeCriticalSection(&am...转载 2019-05-20 01:12:24 · 570 阅读 · 0 评论 -
windows C/C++ 线程安全(二)跨进程的线程控制之于互斥体
承接上一篇:https://blog.youkuaiyun.com/uVarAndMethod/article/details/90359480DWORD WaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds // time-out interval ...转载 2019-05-20 01:23:35 · 671 阅读 · 0 评论 -
windows C/C++ 内核对象、事件对象、信号量
承接上一篇:https://blog.youkuaiyun.com/uVarAndMethod/article/details/90360838 1、内核对象: 进程、线程、文件、文件映射、事件、互斥体等等 2、事件内核对象的创建 HANDLE g_hEvent = CreateEvent(N...转载 2019-05-20 01:43:08 · 784 阅读 · 0 评论 -
windows C/C++ 线程安全(三)(互斥+同步)
承接上一篇:https://blog.youkuaiyun.com/uVarAndMethod/article/details/90364461互斥: 当多个线程访问同一个全局变量,或者同一个资源(比如打印机)的时候,需要进行线程间的互斥操作 来保证访问的安全性. 临界区、互斥体、事件和...转载 2019-05-20 12:15:33 · 648 阅读 · 0 评论 -
CreateProcess的做了什么
CreateProcess的做了什么 BOOL CreateProcess( LPCTSTR lpApplicationName, // ...转载 2019-05-20 12:26:24 · 449 阅读 · 0 评论
分享