C++
文章平均质量分 58
zt_xcyk
小小程序员
展开
-
C++控制台游戏2048
2048这个游戏相信好多人都玩过,想想其实功能挺简单的,无非就是上下左右移动,然后判断数字,接着随机出现2或者4。 原来我是我用好多函数实现的,显得有点乱。然后看到别人用类实现,创建对象,调用成员函数,感觉写的非常好,借鉴了好多地方改了改。1. 我们先来看看主函数:int main(){ unsigned int x = 1, y = 1; while (x == y)原创 2015-03-04 09:32:24 · 1414 阅读 · 2 评论 -
线程和同步
线程和同步1. 多线程作用提高应用程序响应。利用多线程编程并不一定能加快程序运行的速度,其目的是拥有更加良好的程序响应。例如在一个图形界面执行一个操作的同时启动另一个。使多CPU系统更加有效。改善程序结构。多线程程序比单线程程序更能适应用户需求的变更。占用更小的系统资源。线程的数据结构简单,停止、运行速度快,进程是线程的靠山,是车间,线程是小组,活动方便。进程任务大、信息多,将它细分为线程后原创 2017-06-09 15:19:40 · 483 阅读 · 0 评论 -
sprintf与sscanf函数总结
转载地址:http://www.cnblogs.com/Anker/p/3351168.html1、前言 我们经常涉及到数字与字符串之间的转换,例如将32位无符号整数的ip地址转换为点分十进制的ip地址字符串,或者反过来。从给定的字符串中提取相关内容,例如给定一个地址:http://www.bokeyuan.cn:2345,我们要从地址中提出协议,主机地址和端口号。之前对字符转载 2017-06-15 11:35:20 · 407 阅读 · 0 评论 -
windows 安装Beautiful Soup
windows 安装Beautiful Soup下载最新版本的Beautiful Soup解决下载的压缩包,并进入。例如我是在H盘解压的。 H:\beautifulsoup4-4.6.0>运行python setup.py build运行python setup.py install测试是否安装成功from bs4 import BeautifulSoup原创 2017-06-28 14:36:45 · 1007 阅读 · 0 评论 -
八大排序代码总结
讲排序的时间空间复杂度什么的网上一大推,这里就不写了,仅仅写了这些算法的实现。//(1)并归排序template<typename T>void merge(T A[], T B[], T C[], int lengthA, int lengthB){ int indexA = 0, indexB = 0, indexC = 0; while (indexC < lengthA原创 2016-01-28 22:31:02 · 571 阅读 · 0 评论 -
指针数组和数组指针
指针数组和数组指针一、概念指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,即指向数组的指针例子说明int *a[4] //指针数组 表示数组a中的元素都为int型指针//元素表示:*a[i] *(a[i])是一样的,[]优先级高于*int (*a)[4] //数组指针 表示指向数组a的指针二原创 2017-08-09 18:15:03 · 831 阅读 · 0 评论 -
VS2015设置DLL和LIB的输出目录
VS2015设置DLL和LIB的输出目录DLL设置输出目录工程点击右键–>属性–>链接器–>常规–>输出文件工程点击右键Configuration Properties–>Linker–>General–>Output File 默认设置,一般为:$(OutDir)$(TargetName)$(TargetExt) 相对路径的起点为xxx.vcxproj 文件所在的目录lib设置输出目录原创 2017-09-16 20:23:25 · 9938 阅读 · 1 评论 -
DLL中的回调函数实现
DLL中的回调函数实现DLL文件中存放的是各类程序的函数实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数地址,最后进行调用。但是有时候我们需要DLL和程序进行通信,将应用程序的某些功能提供给DLL使用,这时就可以使用回调函数。 比如应用程序A调用动态链接库D,同时需要将D中的一些日志信息反馈给A进行处理。这时可以在A中设置写日志的回调函数提供给DLL。一、调用程序中操作应用程序提原创 2017-09-27 22:58:33 · 5979 阅读 · 0 评论 -
测试代码所用时间
测试程序运行时间及效率(微·秒级别)一、关于输出使用OutputDebugString输出这种方法经常用于调试程序,测试发现,如果没有用debugview去捕获输出日志的话,此时OutputDebugString语句花费的时间要比有捕获时候小。(大概少了0.03毫秒)说明用OutputDebugString输出日志对程序性能影响很小很小输出到文件中这种方法一般为程序的输出日志,便于保存和日后查看原创 2017-09-29 17:13:07 · 657 阅读 · 0 评论 -
将 析构函数 声明为 虚函数 的必要性
大家看这个例子:#include<iostream>using namespace std;class Base{public: Base(); ~Base();};Base::Base(){ cout << "Base is create" << endl;}Base::~Base(){ cout << "~Base is destructor..原创 2015-05-15 17:32:35 · 1022 阅读 · 6 评论 -
深入应用C++11 笔记 (二)
深入应用C++11 笔记 (二)第一章 程序简洁之道1.3 初始化列表给类添加一个std::initializer_list构造函数,它将拥有任意长度初始化的能力。class Foo{public:Foo(std::initializer_list) {}};Foo foo = { 1,2,3,4,5 };//OK使用initializer_list来接收原创 2018-01-25 16:07:33 · 482 阅读 · 0 评论 -
深入应用C++11 笔记 (三)
深入应用C++11 笔记 (三)第一章 程序简洁之道1.5 std:function可调用对象是一个函数指针是一个具有operator()成员函数的类对象(仿函数)是一个可被转换为函数指针的类对象是一个类成员(函数)指针void func(void){//...}struct Foo{void operator()(void){ //.原创 2018-01-31 14:32:00 · 338 阅读 · 0 评论 -
深入C++11 笔记
深入应用C++11 笔记 (一)第一章 程序简洁之道1.1 类型推导auto类型推导 (auto–> 类型指示符 type-specifier)auto x=5; //OK:x-->intauto pi=new auto(1); //OK:pi-->int*const auto *v=&x,u=6; //OK:v-->const原创 2018-01-16 15:06:14 · 397 阅读 · 0 评论 -
C++ 11 可变模板参数详解
C++ 11 可变模板参数详解1. 概述 可变模板参数(variadic templates)是C++ 11新增的最强大的特性之一,它对参数进行高度泛化,它能表示0到任意个数、任意类型的参数。2. 可变模板参数的展开 可变参数模板和普遍模板的语义是一样的,只是写法上稍有区别,声明可变参数模板时需要在typename或class后面带上省略号“…”。例如://template<class.转载 2017-06-29 15:24:48 · 5414 阅读 · 1 评论 -
深入应用C++11 笔记(四)
深入应用C++11 笔记(四)第一章 程序简洁之道1.8 tupe元组构造tuple //头文件为: <tuple> 使用make_tuple 构造一个tuplechar* sendPack;int nSendSize;tuple<const char*, int> tp = make_tuple(sendPack, nSendSize...原创 2018-05-05 14:58:04 · 576 阅读 · 0 评论 -
cin深入分析(下) – cin的错误处理
cin深入分析(下) – cin的错误处理深入了解cin错误处理机制,深入了解cin.clear/cin.ignore/cin.good/cin.fail等函数。转载 2017-05-08 20:02:24 · 574 阅读 · 0 评论 -
cin深入分析(上)
cin深入分析(上)C++的输出和输入是用“流”(stream)的方式实现的,在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。输入结束条件 :遇到Enter、Space、Tab键。程序1 参数输入错误问题: int number; int number1; cout << "please input number:" << endl;转载 2017-05-08 14:56:09 · 438 阅读 · 0 评论 -
C++ STL总结
概念 STL(Standard Template Library),即标准模板库,它可被容纳于C++标准程序库(C++ Standard Library)中。是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可原创 2017-05-23 14:41:49 · 423 阅读 · 0 评论 -
统计代码注释行的一些问题
1. 要统计一个c文件或者cpp文件里面的注释行,空行,总行数等,首先我们遇到的问题就是打开这个文件。ofstream: 写操作(输出)的文件类 ifstream: 读操作(输入)的文件类fstream: 可同时读写操作的文件类这里我们只要读取文件里面的数据即可,所以选用ifstream.注意头文件(fstream).然后我们也许想,我想打开指定位置的文件,应该怎么做,怎么把指定目录下的c文件和c原创 2015-03-03 22:53:18 · 1236 阅读 · 0 评论 -
不用sizeof,测出int占几个几节的方法。
根据目标机的不同,Int占的字节是2或者是4.这里我们不用sizeof,怎么知道Int在自己电脑上占几个字节呢,我想到两种方法。 第一种:定义一个数组,int a[2],输出a[1]和a[0]的地址,两个差就是Int占的字节数。 两个地址的差是4;第二种:定义一个数组,int a[4],然后用一个char型的指针指向其首地址,然后这个指针每次加一,然后再把这个加了一的地址赋给一个int型的指原创 2015-04-09 16:40:59 · 929 阅读 · 0 评论 -
public protected private 解析
派生类继承了基类的全部数据成员和除了构造,析构函数之外的全部函数成员,这些成员的访问属性有继承方式控制。三种访问属性分别是:public(公有),protected(保护),private(私有)。Public:当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,但是私有成员不可以直接访问。(可以通过能访问的基类函数间接访问这些私有成员)class base{publi原创 2015-08-20 15:15:30 · 496 阅读 · 0 评论 -
用栈实现大数加法
前天听到舍友说面试遇到一个大数加法的题自己想了(这里就不解释什么是大数运算了),自己想了几种方法,用字符串保存输入的大数字,然后分割成一个个比较小的数,存放在数组了,然后计算。还有就是用链表的方法,两条链表存放两个大数字,每个结点就是一个个位数,然后从尾到头依次相加;自己也在网上找了一下大数运算的方法,这两种方法都有; 今天突然想到用栈不是更好实现,把输入的数字一个个入栈,因为栈是先进后出,所以两原创 2015-09-18 22:20:49 · 1790 阅读 · 0 评论 -
C++ 基础知识(1)--类
C++ 基础知识(1)–类 我们通过类来定义自己的数据结构,通过定义新的类型来反映待解决问题中的各种概念,可以使我们更容易编写、调试和修改程序。 类的基本思想是数据抽象和封装 。1.基本概念数据类型(date type):一个值的集合和定义在这个集合上的一组操作的总称。(eg:整型,长整型,浮点型)面向对象(Object Oriented Programming):面向对象是一种原创 2016-11-09 23:45:54 · 368 阅读 · 0 评论 -
C++基础知识(2)--构造一个类的一般顺序
构建一个类的对象的一般顺序如果该类有直接或者间接的虚基类,则先执行虚基类的构造函数。如果该类有其他基类,则按照它们在继承声明的列表中出现的次序,分别执行它们的构造函数,但构造过程中,不在执行它们基类的构造函数。按照在类定义中出现的顺序,对派生类中新增的成员对象进行初始化。对于类类型的成员对象,如果出现在构造函数初始化列表中,则以其中指定的参数执行构造函数。如果未出现,则执行默认构造函数;对于基原创 2016-11-15 00:21:04 · 747 阅读 · 0 评论 -
通过进程ID或名字结束进程
1.通过进程名:void CloseProgram(CString strProgram){ HANDLE handle; //定义CreateToolhelp32Snapshot系统快照句柄 HANDLE handle1; //定义要结束进程句柄 handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得原创 2016-11-30 18:34:49 · 2353 阅读 · 0 评论 -
一个strcpy引发的血案
一个strcpy引发的血案就在离下班还有半个小时的时候,M君突然跑来说,“今天给客户的软件,客户刚装上一运行就崩溃,这是给客户看效果,还没有卖出去…….”。我心里就想骂,我刚接手这个项目才一周,代码还没有熟悉,上层也就我一个,重要的是,这个软件是8.0的,我接手的是9.1的,我连8.3的代码都没有。上SVN看看,最后一个版本是2015年9月提交的,这个时间,我还没来公司,8.0的我连界面都不知道长原创 2016-11-28 11:00:53 · 732 阅读 · 0 评论 -
屏蔽windows应用程序中,windows自带的右键菜单
屏蔽windows应用程序中,windows自带的右键菜单原创 2017-03-21 09:44:02 · 1774 阅读 · 1 评论 -
Windows网络编程(基础篇1)
Windows网络编程(基础篇1) Winsock是一种网络编程接口,不是协议。 除了WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError属于Winsocket1.1规范函数外,凡是有前缀WSA的,都是在Winsock 2 中更新或者增添的一个新的API函数。 一、Winsock初始化包含头文件winsock2.h,链接库WS2_32i原创 2017-03-10 15:21:28 · 8369 阅读 · 0 评论 -
关于Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP 与P是等效的。P表示这是一个指针。T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义转载 2017-03-23 17:00:09 · 497 阅读 · 0 评论 -
获取当前焦点所在窗口句柄,通过 句柄获取执行路径
获取当前焦点所在窗口句柄,通过 句柄获取执行路径原创 2017-03-16 13:51:55 · 4995 阅读 · 0 评论 -
套接字的I/O模型(二)
套接字的I/O模型(二)overlapped模型 相比于其他的I/O模型,重叠I/O(Overlapped I/O)模型使应用程序能达到更佳的系统性能。重叠模型的基本设计原理是:让应用程序使用重叠的数据结构,一次投递一个或多个Winsock I/O请求。针对那些提交的请求,在它们完成之后,应用程序可以为它们提供服务。Windows重叠I/O机制可通过ReadFile和WriteFile两个函数原创 2017-04-12 16:13:59 · 518 阅读 · 0 评论 -
VS远程联机调试exe和dll
VS远程联机调试exe和dll原创 2017-05-11 11:01:59 · 1919 阅读 · 0 评论 -
abort()、exit()、atexit使用
abort()、exit()、atexit\atexit使用1. abort()立即终止当前进程,产生异常程序终止进程终止时不会销毁任何对象示例:/* abort example */#include <stdio.h> /* fopen, fputs, fclose, stderr */#include <stdlib.h> ...原创 2018-06-08 11:12:22 · 27514 阅读 · 1 评论