c++
tiandyoin
裳絮与裳潇
展开
-
定义系统平台编译器位数的宏版本 & Windows 及 Visual Studio 发行时间
【代码】定义系统平台编译器位数的宏版本 & Windows 及 Visual Studio 发行时间。原创 2024-06-14 17:53:48 · 156 阅读 · 0 评论 -
Clang-Format-Options 中文翻译
Clang-format 是格式化代码的工具,本方是它的配置文件 .clang-format。RawStringFormats,NamespaceMacros,Penalty 完美解释。在vscode里使用它格式化C++代码。对所有选项进行了翻译和详解。翻译 2022-09-03 12:00:00 · 830 阅读 · 1 评论 -
C99可变参数宏(Variadic Macros) 打印: __VA_ARGS__ --- print(...)
// 可变参数宏打印 (Variadic Macros "__VA_ARGS__")// 虽然宏不可以递归和重载,但我发明了“倍增宏扩展”方式。原创 2022-08-22 21:00:00 · 863 阅读 · 0 评论 -
cscode 50度灰界面风格
VSCODE自带的颜色主题不是太黑,就是太白。看着难受,自己搞个50度灰风格的界面,麻麻再也不用担心我的眼睛^_^。这个风格基于 "Light (Visual studio - C/C++)"上改造。配置写在home目录.vscode目录里的settings.json里。...原创 2022-08-13 05:05:14 · 280 阅读 · 0 评论 -
vscode配置调用visual studio的编译和调试环境
有了vscode,还要装vs2019干吗?唉,做多平台测试,同时开两个软件太占内存,导致机器卡死。没办法,只想着用vscode调用一下vs2019的原生命令。原创 2022-08-11 02:47:18 · 8606 阅读 · 0 评论 -
【MFC】选择文件夹时,记忆上一次路径
参考https://www..com/Hisin/archive/2012/02/27/2370614.htmlhttps://www..com/ranjiewen/p/5697219.html代码CString s_save_path;//存放选择的目录CMutex g_mtx;//选择文件夹对话框回调函数 int CALLBACK BrowseCallBackFun(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData){...原创 2021-05-24 11:49:44 · 961 阅读 · 1 评论 -
vs 正则表达式替换
1. 将_T("...")转换成"..."_T\({"[^"]@"}\)\12. 将"..."转换成_T("..."),其中过滤掉#include 的前缀~(\#include:b){"[^"]@"}_T(\1)-------------------------------------------------------------------------------------------vs2010、vs2013等vs中如何统计整个项目的代码行数先按Ctrl + F,调出查找窗口,然.原创 2021-05-22 10:53:19 · 538 阅读 · 0 评论 -
CFileDialog 打开多个目录下的多个文件
使用CFileDialog 打开多个文件,获取文件路径。一般的使用情况为同一个文件夹目录下的某些文件,除文件名不一致外,前面路径均一样,使用GetStartPosition(),GetNextPathName()无问题;但是对于打开文件夹目录,采用搜索的方式,显示出若干文件,且不在同一目录下,再采用上述方式,就出现了问题,不能准确获取前缀的文件夹目录地址,仅仅使用了第一个文件的绝对地址来覆盖后续的多选文件查了好多资料,均给的第一种方式,但是并不能解决我所出现的问题,最后终于找到了一篇解决问...转载 2021-04-30 13:28:37 · 536 阅读 · 0 评论 -
shell 括号引号匹配规则
char stack.top normal { [ ( ) ] } ` " ' empty - push push push fail fail fail push push push { - - - push fail - pop push push pu...原创 2021-04-23 10:51:40 · 587 阅读 · 1 评论 -
使用操作数控制公式运算
#include<iostream>using namespace std; typedef enum{ add = 0, sub, mul, divi}type; int main(){ int a = 10; int b = 20; auto func = [=](type i)->int { switch (i) { .原创 2021-01-05 11:16:50 · 176 阅读 · 0 评论 -
抖音色度抠图代码
void DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, short xStart, short yStart, COLORREF cTransparentColor) { // 色度抠图: 把hBitmap中的颜色cTransparentColor替换成透明色,并写到hdc上 BITMAP bm; COLORREF cColor; HBITMAP bmAndBack, bmAndObject, bmAndMem, bmSave;..原创 2020-12-31 09:44:27 · 798 阅读 · 0 评论 -
QT5对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)
问题解决:对话框的中文字符串【乱码】 (error: C2001: 常量中有换行符)假设编译环境:QT5+vs2015项目配置:默认编码:UTF-8UTF-8 BOM:目前存在了则保留如果你在使用VS2008(需要打补丁)、VS2010、VS2013、VS2015(未安装Update2),或者你的源码需要兼容这些编译器,当你在Qt5的C++源文件内使用中文时,你需按以下步...原创 2020-01-03 17:50:08 · 1070 阅读 · 0 评论 -
后台服务显示右下角弹窗 -- system权限创建用户权限进程
windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限。打开任务管理器,可查看到(查看不到,点击查看,选择列即可)通常桌面系统explorer的权限是User权限,即用户权限的,它可以是你administrator,可以是你PC的名字,可以是Guest等,所以我们开启并运行的所有进程都继承它的权限。 若想运行具备system权限...转载 2019-01-04 15:49:50 · 538 阅读 · 0 评论 -
奇怪的函数返回值
今天做一个C语言(非C++)的工程在main.c里没有 include <geometry.h>但有把geometry.c拉入工程.编译都是成功的。在调试时,调用geometry.c里的函数 double get_line_lenght()double pp = get_line_lenght();返回值明明是 20000,赋值给pp时就变成了 12947994...原创 2018-12-27 11:46:15 · 741 阅读 · 0 评论 -
C语言获取数组越界,除以零等异常
#pragma once#include <windows.h>#include <tchar.h>#include <stdio.h>//需求安装windows sdk#define MAX_PATH 260#define STATUS_POSSIBLE_DEADLOCK ((unsigned long)0xC0000194L)#def...原创 2018-11-24 16:10:59 · 1077 阅读 · 0 评论 -
白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)
我们都知道SEH异常处理机制,那VEH、TopLevelEH呢?他们执行的先后顺序是怎样的呢?当这些机制都不使用的情况下,会发生什么情况呢?异常处理器是怎么工作的?如果你对此感兴趣,那我们就一起来扒开异常处理机制的面纱吧术语:SEH: 结构化异常处理VEH: 向量化异常处理TopLevelEH:顶层异常处理EXCEPTION_EXECUTE_HANDLER :该异常被处理。从异常处下一条指令继续执...转载 2018-11-24 10:40:17 · 1765 阅读 · 0 评论 -
异常和异常处理(windows平台)
【翻译】异常和异常处理(windows平台)翻译的不好,莫怪。原文地址: http://crashrpt.sourceforge.net/docs/html/exception_handling.html#getting_exception_contextAbout Exceptions and Exception Handling About Exception 当程...转载 2018-11-24 10:15:39 · 730 阅读 · 0 评论 -
正则表达式,解决要么有要有没有,但必须开头
必须以单词hello结尾,且hello前面必须是以下三种情况:1. 0至多个单词(单词指字母,数字,下划线,0-9a-zA-Z_),再加1至多个下划线_2. 1至多个下划线_3. 什么都没有,但单词hello必须在开头表达式1: ^([\\w]*_+)?hello$表达式2: ^((?=[\\w]*_).)*hello$...原创 2018-11-02 17:30:27 · 1297 阅读 · 0 评论 -
checked_delete问题: Beyond the C++ STL: an introduction to boostdeleter::do_it
环境:Visual studio 2017boost库编译选项: msvc141,multi,win64,debug,shareddemo工程设置: debug, win32问题源:《Beyond the C++ STL: an introduction to boost》书上Part I, Library 3, checked_delete章节如果把 delete原创 2017-12-13 16:39:59 · 278 阅读 · 0 评论 -
enable_if 源码剖析
#include #include "boost/utility/enable_if.hpp"#include "boost/type_traits.hpp"#include "boost/mpl/has_xxx.hpp"BOOST_MPL_HAS_XXX_TRAIT_DEF(model)class some_class {public: typedef int type; typ原创 2017-12-15 11:01:58 · 356 阅读 · 0 评论 -
Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法
让你的函数对象可以与Boost.Lambda一起使用不是所有的表达式都适合使用 lambda 表达式,复杂的表达式更适合使用普通的函数对象,而且会多次重用的表达式也应该成为你代码中的一等公民。它们应该被收集为一个可重用函数对象的库。但是, 你也可能想把这些函数对象用在lambda表达式中,你希望它们可以与 Lambda 一起使用;不是所有函数对象都能做到。问题是函数对象的返回类型不翻译 2018-01-11 17:16:08 · 293 阅读 · 0 评论 -
Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法 switch_statement
这些就是 if-then-else, 我们再看看 switch-语句,它与标准C++ switch有些不同。(switch_statement( _1, case_statement (var(std::cout) case_statement (std::cout default_statement (std::cout )(make翻译 2018-01-12 17:18:41 · 215 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认...转载 2018-03-19 10:45:21 · 144 阅读 · 0 评论 -
讲讲智能指针的缺点
智能指针有什么不足之处?我能想到的1 循环引用2 基于引用计数的一些性能损耗还有其他的缺点吗?相对比来说GC比智能指针又有什么优势呢不朽战魂林登万己所不欲,勿施于人9 人赞同了该回答智能指针的设计理念是没有问题的,各位说风格不一致问题的,是因为还在用老的理念用新东西。和普通指针相比,智能指针通过引用计数,实现了资源回收。智能指针是为了减轻程序员直接管理内存。和new混杂使用是习惯问题,不是智能指针...转载 2018-03-23 11:42:25 · 7161 阅读 · 0 评论 -
Dll注入经典方法完整版
注入Dll:1,OpenProcess获得要注入进程的句柄2,VirtualAllocEx在远程进程中开辟出一段内存,长度为strlen(dllname)+1;3,WriteProcessMemory将Dll的名字写入第二步开辟出的内存中。4,CreateRemoteThread将LoadLibraryA作为线程函数,参数为Dll的名称,创建新线程5,CloseHandle关闭线程句柄卸载Dll:...转载 2018-03-20 21:54:36 · 2106 阅读 · 0 评论 -
qt传递二维数组,列表给python
hello.proINCLUDEPATH += -I C:\Python27\includeINCLUDEPATH += -I C:\Python27\Lib\site-packages\numpy\core\includeINCLUDEPATH += -I C:\Python27\Lib\site-packages\numpyLIBS += -L C:\Python27\libs -lpyt...原创 2018-05-07 11:13:10 · 2797 阅读 · 0 评论 -
rapidJson输出时 保留小数位
pretty_writer.SetMaxDecimalPlaces(4);这个真好用,它使用gresu, 尽可能给你处理最接近的精度,并按要求输出小数位。#include <string>#include <fstream>#include <iostream>#include <QMessageBox>#include <QStri...原创 2018-06-10 10:27:08 · 3740 阅读 · 0 评论 -
关于c语言结构体偏移的一点思考
注:此处只是利用了编译器的特性来计算结构体偏移这句话就一笔带过,说得有点牵强附会。以后有时间自己再详细了解一下编译器的特性。。。more exceptional c++ 中文版 26页 https://my.oschina.net/gschen/blog/140463前言相信大家在c语言程序开发的过程一定都使用过结构体,那么不知你对结构体中成员变量偏移这块是如何理解的?本文...转载 2018-08-03 17:16:27 · 1562 阅读 · 0 评论 -
去除C++中string前面和后面的空白符
用英文正式表达的话,是trim掉string leading和trailing的whitespaces。在工作中,如果要去除string前面或者后面的空白符,只是用如下的三种方法之一就行了。#include <algorithm> #include <functional> #include <cctype>#include <locale...转载 2018-08-08 15:05:56 · 2739 阅读 · 0 评论 -
C++ 动态库导出函数名“乱码”及解决
刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都“乱码”了。导出过程如下:新建一个Win32项目:新建的解决方案里有几个导出的示例:// 下列 ifdef 块是创建使从 DLL 导出更简单的// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLLEXPORT_EXPORTS// 符号编译的。在使用此 DLL 的// 任何其他项目上不应定义...转载 2018-08-22 09:18:40 · 4598 阅读 · 1 评论 -
C++复制文件夹
#include "Shellapi.h"#include "tchar.h"#pragma comment(lib,"shell32.lib") //告诉编译器在编译形成的.obj文件和.exe文件中添加一条信息,使得连链接器在链接库时去直接找shell32.lib这个库,不要去找别的库在相应的函数中添加如下代码SHFILEOPSTRUCT fop;fop.wFunc =...转载 2018-08-31 13:49:04 · 3006 阅读 · 0 评论 -
Try Catch
#pragma once#include <atlconv.h>#define CatchErrorHandle(Content, Title, ErrorCode, Handle)\try {\ Content;\}\catch(const char* pszText)\{\ CString szTxt = CA2T(pszText);\ ::MessageB...原创 2018-08-24 17:48:30 · 271 阅读 · 0 评论 -
C++日志系统log4cxx使用总结
本文主要从log4cxx级别、layout、格式化、命名规则、Filter几个方面介绍。 一、log4cxx命名规则 Logger由一个String类的名字识别,logger的名字是大小写敏感的,且名字之间具有继承的关系,子名有父名作为前缀,用点号.分隔。如:x.y是x.y.z的父亲。根logger (root logger)是所有logger的祖先, 它具有如下属性:1...转载 2018-09-06 13:44:09 · 1920 阅读 · 0 评论 -
使用正则表达式模拟读写INI文件
regex reg("^([\\s]*)([\\w\\-\\_]+)([\\s=]+).*$"); reg = regex("^([\\s]*)([\\w\\-\\_]+)([\\s=]+)(.*)([\\s]*)$");INI为系统文件,有事需要与管理员沟通开通读写权限。麻烦,自己写个程序来读写。当然喷客可以自己写XML,js原创 2017-07-14 10:45:18 · 1159 阅读 · 1 评论