C++
文章平均质量分 52
冷月醉雪
这个作者很懒,什么都没留下…
展开
-
Windows下 dmp文件的产生
查看更多:https://www.yuque.com/docs/share/36371498-75ea-478c-9cd2-15b024644439?#原创 2020-01-10 22:07:45 · 776 阅读 · 0 评论 -
c++并发编程之互斥锁(mutex)的使用方法
查看更多:https://www.yuque.com/docs/share/fe51c94e-e47c-4a14-9a43-02b5ca25e667?#原创 2020-01-09 17:01:54 · 711 阅读 · 1 评论 -
Lock
查看更多:https://www.yuque.com/docs/share/2a6688fd-4d1f-4ddd-9c0f-508633620eec?#原创 2020-01-09 16:54:44 · 445 阅读 · 0 评论 -
QT日志输出
#define MAX_LOG_SIZE (20480)static char *sg_buf = new char[MAX_LOG_SIZE];static void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)...原创 2019-12-24 11:12:54 · 327 阅读 · 0 评论 -
Qt使用翻译文件
bool installLanguage(const QString &path){ QTranslator *trans = new QTranslator; if (trans->load(path)) { if (this->installTranslator(trans)) { qDebug()<<...原创 2019-12-24 11:11:58 · 438 阅读 · 0 评论 -
关于析构那点事
了解更多:https://www.yuque.com/docs/share/6a99704d-95c2-487e-95f3-0cb30e4ac8d6?#原创 2019-12-23 16:54:48 · 172 阅读 · 0 评论 -
理解C+++中的析构函数的执行顺序
通过 Student 类依次创建了3个对象,分别是 stu1、stu2、stu3,但它们对应的析构函数的执行顺序却是相反的,这是为什么呢?要搞清楚这个问题,首先要明白C++内存模型,也就是C++的代码和数据在内存中是如何存储的。在内存模型中有一块区域叫做栈区,它是由系统维护的(程序员无法操作),用来存储函数的参数、局部变量等,类似于数据结构中的栈,也是先进后出。当遇到...原创 2019-12-23 16:53:13 · 677 阅读 · 2 评论 -
C++ vector的拷贝
vector是一个构造对象,不能直接使用=符号进行复制,必须迭代每个元素来复制。或者重载=操作符。赋值方法:方法1:vector<data_type> v2; vector<data_type> v1(v2);//声明方法2:使用swap进行赋值vector<data_type> v1, v2; v1.swap(v2); //将v2赋...原创 2017-11-08 16:21:41 · 7251 阅读 · 1 评论 -
C++ escape和unescape算法
escape算法 std::string escape(std::string &str){ setlocale(LC_CTYPE,""); wchar_t aa[1<<10]; mbstowcs(aa,str.c_str(),str.size()); std::wstring wcs(aa); str = ""; for(int i=0;i<wc...原创 2017-11-15 14:30:48 · 3958 阅读 · 0 评论 -
Boost 线程
1.创建线程 boost::thread类代表一个可执行的线程。缺省构造函数创建一个代表当前执行线程的实例。一个重载的构造函数以一个不需任何参数的函数对象作为参数,并且没有返回值。这个构造函数创建一个新的可执行线程,它调用了那个函数对象。 线程对象只能做两项操作。线程对象可以方便使用==和!=进行比较来确定它们是否代表同一个线程;还可以调用boost::thread::join...原创 2017-12-13 16:29:10 · 576 阅读 · 0 评论 -
UTF8转Unicode
int GetUtf8ByteNumForWord(char firstCh){ int nRet=0; __asm { movzx ecx,byte ptr[firstCh] and ecx,0xE0 jz done test ecx,0x80 jnz lbm m...原创 2017-12-15 14:51:55 · 509 阅读 · 0 评论 -
无法解析的外部符号 __imp__curl_easy_init
下载libcurl的源码,打开lib文件夹下项目,编译为静态链接库。 在编译的时候出现问题如下:注:以前在vc2005下用mfc工程并且libcurl用的dll方式没问题,这次vc2008用的sdk并且libcurl用的静态编译,也不知道什么问题引起的HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_slist...原创 2018-01-30 16:54:37 · 2307 阅读 · 1 评论 -
json静态链接错误:msvcprtd.lib(MSVCP100D.dll) : error LNK2005:解决方案
在编译的时候出现了一大堆冲突的错误,如下:1> 所有输出均为最新。1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) 已经在 j...原创 2018-01-30 18:13:23 · 501 阅读 · 0 评论 -
json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
release版的库在导入库后,编译会出现:jsoncpp-src-0.6.0-rc2\src\lib_json\json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”: No such file or directory错误,查询网上的解决办法,见网...原创 2018-01-30 18:21:18 · 2621 阅读 · 0 评论 -
解决This function or variable may be unsafe
1.用VS2013打开出现错误的代码文件2.在工程文件名处右击鼠标打开快捷菜单,找到"属性"选项,进入项目属性页面3.项目属性页面如下图所示:4.在属性页面中找到“C/C++"——”预处理器“,按下图操作单击箭头指向处的按钮5.在下面的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS添加完成后应用并退出 6.再次编译并运行即可正常运行...原创 2018-01-31 13:01:45 · 465 阅读 · 0 评论 -
C++ 读写ini
读取.ini文件读取字符串 DWORD GetPrivateProfileString( LPCTSTR lpAppName, // INI文件中的一个字段名[节名]可以有很多个节名 LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名 LPCTSTR lpDefault, /...原创 2018-01-31 14:40:58 · 1885 阅读 · 0 评论 -
C++ 控制台程序不显示控制台黑框
#include "stdafx.h" #include<windows.h> //不显示控制台 #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" ) int main() { int x=::MessageBox(NULL, TEXT("将在20秒后关机,确定执行吗...原创 2018-01-31 15:18:35 · 6409 阅读 · 0 评论 -
错误 2 error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
错误分析 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,没有找预编译指示信息的头文件"stdafx.h"。 因为工程中的每个cpp文件属性默认都是使用预编译(/YU)的,但是添加的第三方文件并没有该预编译指示头文件,所以编译器在此cpp文件中一直到末尾都没有找到它。 解决方法 ·右击报错的cpp文件,选择"属性"...原创 2018-02-01 15:48:19 · 1788 阅读 · 0 评论 -
简单好用的Log类, easylogging++
名称:easyloggingpp GitHub 地址:easylogging(点击链接) 特点:简单、支持多级log输出,支持多种输出形式:文件、控制台、多线程支持 之前版本是在项目工程中增加一个.h头文件,现在版本为需要头文件easylogging++.h和实现文件 easyloggin++.cc 官方社区给出的demo代码如下: #include...原创 2018-02-01 15:06:30 · 1240 阅读 · 0 评论 -
EasyLogging++之简要介绍
Easyloggin++项目在Github上的开源地址:https://github.com/easylogging/easyloggingpp功能特征 ·高度可配置 ·速度非常快 ·线程和类型安全 ·跨平台 ·自定义日志模块 ·条件日志和偶然日志 ·性能跟踪 ·详细记录日志 ·中断处理 ·辅助CHECK宏 ·STL日志...原创 2018-02-01 16:18:44 · 728 阅读 · 0 评论 -
Easylogging++之日志级别
下表中列举了GitHub上给出的Easyloggin++支持的日志级别(按日志级别由低到高排序): Level Description Global Generic level that represents all levels. Useful when setting global configuration for all levels. Trace I...原创 2018-02-01 16:33:51 · 1355 阅读 · 0 评论 -
Easylogging++之配置功能
要完成Easylogging++日志的配置功能,可以通过三种方式实现,而且每一种方法都非常简单。 ·使用配置文件,这种方法的好处就是只要修改配置文件即可实现日志格式的重新配置,而不需要修改源程序代码,缺点就是发布程序时必须打包配置文件一起发布,否则程序无法正常运行。 ·使用el::Configurations类提供的成员函数,这种方法和第一种方法的优缺点正好相反。 ·使用E...原创 2018-02-01 17:32:44 · 2506 阅读 · 1 评论 -
Easylogging++ 格式说明符
输出格式说明符 Specifier Replaced By %logger Logger ID %thread Thread ID - Uses std::thread if available, otherwise GetCurrentThreadId() on windows %level Severity level (Info, Debug, E...原创 2018-02-05 09:52:09 · 1108 阅读 · 0 评论 -
Easylogging++ 辅助配置功能
命令行参数 在Easylogging++中可通过START_EASYLOGGINGPP(argc, argv)来完成命令行参数的设置,下面的表格列举了GitHub上给出的Easylogging++支持的命令行参数: Argument Description -v Activates maximum verbosity --v=2 Activates ve...原创 2018-02-05 09:52:52 · 915 阅读 · 0 评论 -
Easylogging 日志记录器
所有的日志都是由日志记录器完成的,日志记录器使用唯一的ID(大小写敏感)来标识。在Easylogging++中默认了三个现有的日志记录器: ·默认日志记录器,其ID为:default ·性能日志记录器,其ID为:performance ·系统日志记录器,其ID为:syslog,需要定义宏ELPP_SYSLOG,否则不存在 注册日志记录器 el::L...原创 2018-02-05 09:53:21 · 599 阅读 · 0 评论 -
Easylogging++ 记录方式
普通日志记录 对于普通的日志记录,我们可以选择以下两个比较常用的方式: ·LOG(LEVEL) ·CLOG(LEVEL, logger ID)#include "easylogging++.h" INITIALIZE_EASYLOGGINGPP int main(int argc, char** argv) { /// 可以直接...原创 2018-02-05 10:24:15 · 1130 阅读 · 0 评论 -
Easylogging++ Verbose日志详解
Verbose日志不适用与于划分级别的日志记录,意思就是说在设置了标记:LoggingFlag::HierarchicalLoggin的日志记录中,即使阀值设置大于Verbose级别,甚至是设置成Unknown,也无法关闭Verbose级别日志的输出。同时,Verbose日志拥有专属的宏定义来记录日志,而不支持类似于LOG(VERBOSE)等宏定义。下面列出Verbose日志专属的宏定义:...原创 2018-02-05 11:01:45 · 931 阅读 · 0 评论 -
Easylogging++ 性能跟踪
性能跟踪是Easylogging++其中一个非常显著的功能,而且使用起来也十分简单。如果在Windows平台下使用性能跟踪,其原理是基于WIndows API函数GetSystemTimeAsFileTime实现的。在Easylogging++的介绍中,该功能可以跟踪到微秒级别。在Windows平台下使用性能跟踪的话,建议只在精度为毫秒级的情况下使用。 如果你想在程序中使用性能跟踪功...原创 2018-02-05 11:26:41 · 1134 阅读 · 0 评论 -
Easylogging++ 共享日志库
Easylogging++日志库是可以共享给动态库、静态库以及应用程序共同使用的。在Easylogging++日志库的源码中,有一个名为Storage的类,这个类负责维护Easylogging++日志数据库的主要入口,比如日志记录器的管理,日志配置的管理等都是在Storage类中完成的。 默认情况下,我们每调用一次初始化宏INITALIZE_EASYLOGGINGCPP就会创建...原创 2018-02-05 11:53:47 · 1244 阅读 · 0 评论 -
Easylogging++ 日志文件滚动
按大小滚动文件 在Easylogging++中,已经实现了按照日志文件大小来滚动日志记录。有一个配置项:MAX_LOG_FILE_SIZE,这个配置项的值(以字节为单位)表示的就是日志文件的最大大小。一旦日志文件的大小达到这个配置项设置的值,日志文件就会自动清空文件中所有的日志记录,并重新开始写入。不过配置项MAX_LOG_FILE_SIZE在默认情况下是不生效的,需要设置标记:Logg...原创 2018-02-05 14:07:22 · 2182 阅读 · 1 评论 -
RegOpenKeyEx 返回值 2
RegOpenKeyEx 返回值 2 x64 系统: 32bit 应用程序调用RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft", 0, KEY_WOW64_64KEY | KEY_READ, &hKey ); 注意 KEY_WOW64_64KEY 权限值必须使用否则将查找不到指定的路径。 参考:...原创 2018-01-30 15:07:43 · 1198 阅读 · 0 评论 -
VS2013 本地C++单元测试框架
在VS2013中,可以使用VS自带的C++单元测试框架。 在使用该框架前,需要先安装Unit Test Generator(可以通过菜单“工具->扩展和更新”搜索安装)。 下边,就阐述一下利用该框架的步骤:1. 新建空的Win32控制台项目NativeUnitTest 2. 新建单元测试工程 在解决方案NativeUnitTest下新建单元测试工程,“Vis...原创 2018-02-26 18:14:30 · 883 阅读 · 0 评论 -
std::string c1;提示string不是std成员
加上#include<iostream> 即可! https://www.yuque.com/docs/share/fa59c3fa-c234-4c94-b24a-d28c1caf4a4f原创 2018-02-26 21:00:25 · 3435 阅读 · 0 评论 -
C++中应用程序获得管理员权限运行(图标带盾牌)
在vista以后的windows版本中,有些时候需要提升编译后生成程序的权限,即希望让生成的程序以管理员身份运行。虽然在一般情况下,可以使用鼠标右键选择的方式来强行以管理员身份运行,但它并没有屏蔽普通运行方式,而且普通人通常也不会使用右键选择以管理员身份运行,所以必须在生成程序时就限定程序只能以管理员方式来运行。 先简单说一下,在vista以后的windows版本中,微软引...原创 2018-02-27 10:42:15 · 5344 阅读 · 0 评论 -
DirectShow 基础教程
让我们通过以下代码对DirectShow有个初步的认识#include <dshow.h> #pragma comment(lib,"strmbasd.lib") #pragma comment(lib,"quartz.lib"); void main() { IGraphBuilder *pGraph = NULL; IMedi...原创 2018-02-27 14:33:49 · 983 阅读 · 0 评论 -
DirectShow介绍
DirectShow是一个windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3和WAV文件,同时支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。DirectShow整合了其他的DirectX技术,能自动地侦测并好使用可利用的音视频硬件加速,也能支持没有硬件加速的系统。 DirectShow...原创 2018-02-27 15:23:42 · 436 阅读 · 0 评论 -
DirectShow 概念介绍
设置DirectShow开发的编译环境头文件 所有的DirectShow应用都需要Dshow.h这个头文件,某些DirectShow接口需要附加的头文件,参考接口的说明视具体情况而定。库文件 DirectShow使用以下库文件: ·Strmiids.lib 输出类标识(CLSID)和接口标识(IID),所有DirectShow应用均需要此库。 ·Quartz...原创 2018-02-27 16:24:59 · 466 阅读 · 0 评论 -
DirectShow 体系概述
多媒体的难题 ·多媒体流包含了巨大的数据量,而这些数据都必须非常快地被处理 ·音频和视频必须同步,因此它们必须在同一时间开始或停止,并以同一速率播放 ·数据可能来源很多,如本地文件,网络,电视广播和视频摄像机 ·数据有各种各样的格式,如AVI、SAF、MPEG和DV ·程序员无法预知最终用户使用什么样的硬件设备DirectShow的解决方案...原创 2018-02-27 18:20:58 · 218 阅读 · 0 评论 -
DirectShow Filter Graph组件
DirectShow Filter DirectShow使用一个模块化的架构,每个处理过程都由一个叫做filter的COM对象来实现。DirectShow为应用程序提供了一系列标准的filter,开发者也可编写自己的filter来扩展DirectShow的功能。下面是播放一个AVI文件的步骤: ·从文件中读取数据并转换成字符流(File Source filter) ·检查AV...原创 2018-02-27 19:13:30 · 329 阅读 · 0 评论 -
DirectShow AVI文件操作
由于AVI格式是微软推出的,所以在Windows下操作比较容易,这里我们DirectShow读写AVI视频文件,并把所有操作封装成一个类:AVICodec。下面是类的的定义:class AVICodec{public:AVICodec(){size = -1;}AVICodec(LPCWSTR avifile);void release();int init_getfram...原创 2018-02-27 20:25:57 · 489 阅读 · 0 评论