
C/C++编程
文章平均质量分 84
TS_up
这个作者很懒,什么都没留下…
展开
-
C语言内存管理-字符数组与字符指针
堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)转载 2014-11-15 22:10:29 · 431 阅读 · 0 评论 -
stl中std::binary_function的使用
stl中 bind1st和 bind2nd 以及not1 等适配器的使用在我们使用stl的 一些算法的时候,比如find_if等,需要使用仿函数,如果仿函数有2个参数,但是算法需要一个一元的仿函数的时候,我们可以使用适配器,比如:bind1st和bind2nd来将仿函数适配成一元的操作符。 bind1st表示我们绑定第一个参数,bind2st表示我们绑定第原创 2015-12-26 11:57:07 · 746 阅读 · 0 评论 -
C++ STL算法
【C++ STL学习之一】容器的共通能力和共通操作总结一、C++ STL各容器有一些共通的能力其中三个最核心的能力是:(1)所有容器提供的是“value语意”而不是“reference语意”。容器进行元素的安插操作时,内部实施的是拷贝操作,存放的是元素的副本。因此容器的每一个元素必须能被拷贝。如果打算存放的对象不具备public 拷贝构造函数或者你要原创 2015-12-26 12:19:40 · 325 阅读 · 0 评论 -
重叠IO overlapped I/O 运用详解
I/O设备处理必然让主程序停下来干等I/O的完成,对这个问题有方法一:使用另一个线程进行I/O。这个方案可行,但是麻烦。 即 CreateThread(…………);创建一个子线程做其他事情。 Readfile(^…………);阻塞方式读数据。方法二:使用overlapped I/O。overlapped I/O是WIN32的一项技术, 你可以要转载 2015-12-26 16:57:17 · 794 阅读 · 0 评论 -
USB设备的插入检测
Device Class GUID, Device Interface Class GUID, Interface GUID是有区别的,另外奉上两篇MSDN文章: http://msdn.microsoft.com/en-us/library/windows/hardware/ff553412(v=vs.85).aspx http://msdn.microsoft.转载 2015-12-26 17:31:11 · 533 阅读 · 0 评论 -
CWinThread的使用方法
CWinThread类成员数据成员 m_bAutoDelete 指定线程结束时是否要销毁对象 m_hThread 当前线程的句柄 m_nThreadID 当前线程的ID m_pMainWnd 保存指向应用程序的主窗口的指针 m_pActiveWnd 指向容器应用程序的主窗口,当一个OLE服务器被现场激活时 构造函数 CWinThread 构造一个转载 2015-12-26 17:32:29 · 1273 阅读 · 0 评论 -
C++ 类的静态成员详细讲解
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静转载 2016-01-27 21:50:43 · 222 阅读 · 0 评论 -
VC++文件操作之最全篇
一、剖析VC中的文件操作 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果转载 2016-01-27 22:16:08 · 1779 阅读 · 0 评论 -
c++ 时间类型详解(time_t和tm)
原文:http://blog.youkuaiyun.com/love_gaohz/article/details/6637625Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类U转载 2016-01-13 20:21:35 · 3150 阅读 · 0 评论 -
Unicode字符集和多字节字符集关系
Unicode字符集和多字节字符集关系在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8转载 2016-02-02 19:54:10 · 1170 阅读 · 0 评论 -
从内存资源中加载DLL:CMemLoadDll源码整理
头文件/*****MemLoadDll.h*****/#if !defined(Q_OS_LINUX)#pragma oncetypedef BOOL (__stdcall *ProcDllMain)(HINSTANCE, DWORD, LPVOID );class CMemLoadDll{public: CMemLoadDll(); ~CMemLoad转载 2016-04-22 18:00:39 · 4450 阅读 · 0 评论 -
c运行库、c标准库、windows API
From:c运行库、c标准库、windows API都是什么玩意C运行库和C标准库的关系C标准库,顾名思义既然是标准,就是由标准组织制定的。是由“美国国家标准协会(American National Standards Institute,ANSI)”为了规范C语言库而制定的标准。在最初,各个大学各个公司使用的C语言库都不尽相同,造成相互移植非常困难,在这个背景下,制定转载 2016-07-26 10:02:05 · 621 阅读 · 0 评论 -
C运行时库(C Run-time Library)详解
From:C运行时库(C Run-time Library)详解一、什么是C运行时库1)C运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发转载 2016-07-27 13:19:35 · 815 阅读 · 0 评论 -
指针数组 与 数组指针
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2016-01-23 15:04:18 · 311 阅读 · 0 评论 -
关于EOF(文件结束符)问题的体会
最近写了些代码,在对文件的操作中发现了很经典的EOF问题,呵呵。EOF,即end of file,文件结尾,作为文件结束的标志,在程序中常作为判断的一个标志。但在我们平常的程序中却常发生意想不到的结果。下面这段程序,猜猜它输出的是什么?char c;ifstream fin("d://dat");//设d:/dat文件已存在,内容为a转载 2016-01-27 13:40:39 · 1786 阅读 · 1 评论 -
VC文件操作
在VC中文件操作有三种方式,使用C标准库,使用WINAPI或使用MFC库一.C标准库1.创建打开文件fopenFILE *fopen(const char* filename,Const char* mode)//相应有Unicode版本 _wfopenfilename文件名还有基于CRT的安全版本errno_t fopen_s(FILE ** pFile,co转载 2016-01-27 13:39:43 · 421 阅读 · 0 评论 -
函数调用约定 and 函数名字修饰规则
使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有问题,但是链接的时候总是报告函数不存在(经典的LNK2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C++的代码混合使用的情况下或在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其实这都是函数调用约定(CallingConvention)和函数原创 2015-08-13 15:37:03 · 659 阅读 · 0 评论 -
关于C++中的重载、重写(覆盖)、隐藏
一、 重载(overload)成员函数被重载(overload)的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。二、重写(override)覆盖是指派生类函数覆盖(override)基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(原创 2015-08-14 19:02:56 · 365 阅读 · 0 评论 -
C Runtime Library 与 STL
C Runtime Library 的来历msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能.C Runtime Library 的来历, API, STL, MFC, ATL关系 刚接触Wi转载 2015-08-17 19:11:30 · 486 阅读 · 0 评论 -
《林锐-高质量C/C++编程指南》笔记
1.if语句规则1.1 不可将布尔变量直接与TRUE、 FALSE 或者1、 0 进行比较。根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为1,而Visual Basic 则将TRUE 定义为-1。假设布尔变量名字为flag,它与零值比较的标准if 语句如下:原创 2015-08-17 12:07:07 · 692 阅读 · 0 评论 -
导入库和静态库
目前以lib后缀的库有两种,一种为静态链接库(Static Library,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Library,以下简称“导入库”)。静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态转载 2015-08-21 16:41:22 · 553 阅读 · 0 评论 -
实现多国语言的几个小知识
From:http://blog.youkuaiyun.com/mythma/article/details/487283获取模块(exe,dll)的执行目录 CString szCurPath(""), szModelPath; GetModuleFileName(NULL,szCurPath.GetBuffer(MAX_PATH),MAX_PATH); szCurPath.Relea转载 2015-11-26 15:36:40 · 306 阅读 · 0 评论 -
STL中map详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2015-12-28 14:51:39 · 218 阅读 · 0 评论 -
eixt(0),ExitProcess,和TerminateProcess的区别和联系
首先来谈谈一个进程的执行流程。每个应用程序都有个主函数,在WINDOWS下,只支持两种类型的应用程序——CUI(控制台应用程序)和GUI(图形界面应用程序),相应的,其主函数类型不同。来看下这几个入口函数[cpp] view plaincopyprint?int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE,PSTR pszCmdLine, int转载 2016-01-18 16:12:33 · 318 阅读 · 0 评论 -
C++中使用TinyXML2
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。转载 2016-01-18 16:34:55 · 574 阅读 · 0 评论 -
C++的XML编程经验――LIBXML2库使用指南
写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)网上的大多数关于Libxml2的介绍仅仅是翻译了自带的资料,没有详细介绍如何在windows平台下进行编程,更很少提到如转载 2016-01-18 16:37:55 · 417 阅读 · 0 评论 -
tinyxml 使用指导
TinyXML是一个简单小巧,可以很容易集成到其它程序中的C++ XML解析器。它能做些什么简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。XML的意思是“可扩展标记语言“(eXtensible Markup Language)。它允许你创建你自己的文档标记。在为浏览器标记文档方面HTML做得很好,然而XML允许你定义任何文转载 2016-01-23 15:34:37 · 396 阅读 · 0 评论 -
std::string用法总结
在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询。在网上摘抄一下总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int转载 2016-01-27 09:49:49 · 284 阅读 · 0 评论 -
STL STD::list使用说明
stl list使用说明使用标准的std::list进行容器数据处理时,操作比较底层。我们可以,减少引用标准MFC标准库,减少系统的大小,但同时也存在有不方便的操作之处,这里同大家分享一些使用心得...... 在使用std::list::iterator链表遍历器进行访问list STL 中的list 就是一 双向链表,可高效转载 2016-01-27 09:51:53 · 412 阅读 · 0 评论 -
字节序&位序
From:字节序_位序字节序 字节序,又称端序、尾序,英文单词为Endian,该单词来源于于乔纳森·斯威夫特的小说《格列佛游记》,小说中的小人国因为吃鸡蛋的问题而内战,战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端。可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了,因此他的父亲,当时的皇帝,就下了一道敕令,转载 2016-11-08 12:17:30 · 1013 阅读 · 0 评论