![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
C++相关博客
FerrisYu
这个作者很懒,什么都没留下…
展开
-
C++11/14学习(九)函数对象包装器
std::functionLambda 表达式的本质是一个函数对象。当 Lambda 表达式的捕获列表为空时,Lambda 表达式还能够作为一个函数指针进行传递,例如:#include <iostream>using foo = void(int); // 定义函数指针, using 的使用见上一节中的别名语法void functional(foo f) { f(1);}...原创 2020-01-30 21:47:45 · 243 阅读 · 0 评论 -
C++11/14学习(八)Lambda表达式
Lambda 表达式是 C++11 中最重要的新特性之一。类似匿名函数,当需要一个函数但是又不想费力去命名时使用。这样的场景其实有很多,所以匿名函数几乎是现代编程语言的标配。Lambda 表达式基础Lambda 表达式的基本语法如下:[捕获列表](参数列表) mutable(可选)异常属性 -> 返回类型 { // 函数体}捕获列表,可以理解为参数的一种类型。lambda ...原创 2020-01-30 21:45:11 · 191 阅读 · 0 评论 -
C++11/14学习(七)强类型枚举
强类型枚举在传统 C++中:枚举类型并非类型安全,枚举类型会被视作整数。两种完全不同的枚举类型可以进行直接的比较(虽然编译器给出了检查,但并非所有) 。枚举类型的枚举值名字不能相同,这不是我们希望看到的结果。C++11 引入了枚举类(enumaration class) ,并使用 enum class 的语法进行声明:enum class new_enum : unsigned ...原创 2020-01-30 21:41:00 · 290 阅读 · 0 评论 -
C++11/14学习(六)面向对象增强
委托构造C++11 引入了委托构造的概念,可以在一个构造函数调用另一个构造函数,从而达到简化代码的目的:class Base {public: int value1; int value2; Base() { value1 = 1; } Base(int value) : Base() { // 委托 Base() 构造函数 value2 = 2; }};int mai...原创 2020-01-30 21:38:38 · 241 阅读 · 0 评论 -
C++11/14学习(五)模板增强
外部模板传统 C++ 中,模板只有在使用时才会被编译器实例化。换句话说,只要在每个编译单元(文件) 中编译的代码中遇到了被完整定义的模板,都会实例化。这就产生了重复实例化而导致的编译时间的增加。并且,我们没有办法通知编译器不要出发模板实例化。C++11 引入了外部模板,扩充了原来的强制编译器在特定位置实例化模板的语法,使得能够显式的告诉编译器何时进行模板的实例化:template c...原创 2020-01-30 21:34:44 · 261 阅读 · 0 评论 -
C++11/14学习(四)初始化列表
一. 传统C++传统 C++中,普通数组、没有构造析构和虚函数的类或结构体都可以使用 {} 进行初始化,也就是我们所说的初始化列表。而对于类对象的初始化,要么需要通过拷贝构造、要么就需要使用 () 进行,不支持{}。int arr[3] = { 1,2,3 }; // 列表初始化class Foo{private: int value;public: Foo(int) {}};...原创 2020-01-30 21:15:35 · 609 阅读 · 0 评论 -
C++11/14学习(三)区间迭代
基于范围的 for 循环C++11 引入了基于范围的迭代写法,我们拥有了能够写出像 Python 一样简洁的循环语句:int array[] = { 1,2,3,4,5 };for (auto &x : array){ std::cout << x << std::endl;}最常用的 std::vector 遍历变得简洁:std::vector&...原创 2020-01-30 20:59:39 · 164 阅读 · 0 评论 -
C++11/14学习(二)类型推导
C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型。这使得 C++ 也具有了和其他现代编程语言一样,某种意义上提供了无需操心变量类型的使用习惯。一. autoC++11之前:如果一个变量没有声明为 register变量,将自动被视为一个 auto 变量。C++11开始:register 被弃用,auto赋予了其他含义,即类型自动推导。...原创 2020-01-30 20:53:00 · 169 阅读 · 0 评论 -
C++11/14学习(一)nullptr与constexpr
一. nullptr示例:#include <iostream>void foo(char * c){}void foo(int n){}int main(){ foo(0); // foo(NULL); // 编译无法通过 foo(nullptr); return 0;}foo(NULL)无法编译通过,因为编译器不知道NULL隐式转换为哪个类型的参数来调...原创 2020-01-30 20:16:25 · 123 阅读 · 0 评论 -
linux多线程非递归遍历文件夹模拟处理文件
#include #include #include #include #include #include #include #include #include using namespace std;bool g_bIsListDirEnd = false;pthread_mutex_t g_mutex;void FormatDir(string& strDir){原创 2015-01-12 00:17:57 · 1687 阅读 · 1 评论 -
vs命令行编译显示编译过程方法
借助cygwin,使用sh脚本#! /bin/bashecho "start build..." > ./build.logmode="build"if [ "$1" == "1" ]thenmode="rebuild"fi"/d/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/devenv.原创 2016-08-24 16:43:42 · 3855 阅读 · 0 评论 -
richedit添加两段颜色不同的文字
void CWndDetail::AppendText(const CFString& strTime, const CFString& strContent){ CHARFORMAT2 cf; ::ZeroMemory(&cf, sizeof(CHARFORMAT2)); cf.cbSize = sizeof(CHARFORMAT2); cf.crTextColor = RGB(0xf原创 2015-11-11 16:50:13 · 1902 阅读 · 0 评论 -
C++连接samba
BOOL ConnectWNetResource(LPNETRESOURCE lpnr,LPCTSTR szUserName,LPCTSTR szPassword){ DWORD dwResult; // // Call the WNetAddConnection2 function to make the connection, // specifying a persisten原创 2015-08-27 16:59:09 · 2225 阅读 · 0 评论 -
vs2005编译apache2.2源码调试
一. 下载apache源码并解压 http://mirrors.cnnic.cn/apache//httpd/httpd-2.2.29.tar.gz二. 下载apr-iconv源码(apache2.2编译要用到,但是上面的压缩包里没有提供,需要自己下载) http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.4-win原创 2015-03-26 01:11:51 · 1072 阅读 · 0 评论 -
vs自动注释add-in插件编写(二)--CConnect
HRESULT CConnect::AddMenu(CComBSTR strName, int nPosition){ HRESULT hr = S_OK; CComPtr pDisp; CComQIPtr pCommands; CComQIPtr pCommands2; CComQIPtr pCommandBars; CComPtr pCommandBarControl; CCo原创 2015-02-13 01:27:46 · 892 阅读 · 0 评论 -
atl工程获取系统时间
#include #include CString GetTime(){ CString strRet; CTime tm; tm=CTime::GetCurrentTime(); strRet=tm.Format("%Y/%m/%d"); return strRet;}原创 2015-02-12 16:43:38 · 873 阅读 · 0 评论 -
vs自动注释add-in插件编写(一)--辅助函数
#define ULONG_PTR _w64 unsigned long#include ......void InsertText(CComQIPtr pTextSelection, CString strText){ BSTR bstrText = strText.AllocSysString(); pTextSelection->Insert(bstrText, vsInsert原创 2015-02-12 16:13:29 · 2004 阅读 · 0 评论 -
关于vs2005 __RPC__out __RPC__in 未定义编译错误
1. 下载WDK http://www.microsoft.com/en-us/download/details.aspx?id=118002. 安装WDK3. vs2005 设置:工具-->选项-->项目和解决方案-->vc++目录 将WinDDK\7600.16385.1\inc\api添加到“包含文件”的最前面原创 2014-07-11 21:35:04 · 2503 阅读 · 0 评论 -
_vsnwprintf_s调用内存越界堆栈损坏
一个简单的调用,导致_vsntprintf_s出现内存越界,百思不得其解,在unicode时就是调用int _vsnwprintf_s( wchar_t *buffer, size_tsizeOfBuffer, size_t count, const wchar_t *format, va_listargptr ),这是在msdn上对_vsnwprintf_s函数的声明,第二个参数是sizeOfBuffer;但你进行代码跟踪,跟进vswprint.c时,发现第二个参数变成了"sizeInWords";原创 2013-07-10 17:06:23 · 6576 阅读 · 1 评论 -
WideCharToMultiByte和MultiByteToWideChar函数的用法
为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。常用的代码页由CP_ACP和C转载 2013-07-10 17:03:35 · 1346 阅读 · 0 评论 -
控制台设置中文和窗口大小
_tsetlocale(LC_ALL,_T("chs"));system("mode con cols=120 lines=46");原创 2017-08-22 15:41:31 · 3954 阅读 · 0 评论 -
makefile将中间文件生成到临时目录
TARGET := testCC := g++ #注意每行后面不要有空格,否则会算到目录名里面,导致问题SRC_DIR = srcBUILD_DIR = tmpOBJ_DIR = $(BUILD_DIR)/objDEPS_DIR = $(BUILD_DIR)/deps#这里添加其他头文件路径INC_DIR = \ -I./include \ -I./src \...原创 2017-11-19 17:52:19 · 13109 阅读 · 3 评论 -
GDI+的使用
一.头文件添加: //#define WIN32_LEAN_AND_MEAN //要使用GdiPlus //不可以在windows.h之前定义这个宏 //否则会有编译错误 #include<windows.h> #include "GdiPlus.h" using namespace Gdiplus; #pragma comment(lib,...原创 2014-06-25 11:15:05 · 676 阅读 · 0 评论