C++

随笔分类 - C/C++
TCHAR2char、CString2TCHAR*、TCHAR*2CString
摘要: TCHAR->char的转换CString strData = _T("Hello");int len = WideCharToMultiByte(CP_ACP, 0, strData, -1, NULL, 0, NULL, NULL);char* szTarget = new char[len + 1];memset(szTarget, 0, len + 1);WideCharToMultiByte (CP_ACP, 0,strData, -1, szTarget, len, NULL,NULL);delete[] szTarget;CString->TCHA 阅读全文
posted @ 2012-08-10 11:01 盗艹人 阅读(210) | 评论 (0) 编辑
C++ Dll 编写入门
摘要: 一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上 Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中、Windows编程所需要的大量的API函数也被包含在Kernel DLL中。 在Windows操作系统中使用DLL有很多优点,最主要的一点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个DLL文件,真正实现了资源"共享", 阅读全文
posted @ 2012-05-30 16:15 盗艹人 阅读(7006) | 评论 (0) 编辑
库文件 string.h、cstring、string 你辨清了没
摘要: 在 C++ 中,一般情况下,每个扩展名为“.h”的老的库文件,比如 “iostream.h”,在新标准的标准库中都有一个不带“.h”扩展名的库文件与之相对应。两者区别除了后者有很多改进之外,还有一点就是后者的很多东西都塞进了“std”命名空间中。 但唯独 string 特别。 问题在于 C++ 要兼容 C 的标准库,而 C 的标准库里碰巧也有一个名字叫“string.h”的库文件,包含一些常用的 C 字符串处理函数,比如 strcmp。这个库文件与 C++ 的 string 类半点关系也没,所以库文件 string 并非 string.h 的“升级版本”,它们是毫无关系的两个库文件: ... 阅读全文
posted @ 2011-11-02 11:57 盗艹人 阅读(625) | 评论 (0) 编辑
Unable to load dll 的解决方案
摘要: 前几天在做项目时,需要用到一个非托管的 dll 库,其实使用 .Net 的互操作技术可以很方便地调用非托管 dll 文件中的函数,但是在执行时出现了“Unable to load dll HRESULT: 0x8007007E”的错误,于是马上 Google,得到的答案大部分是讲将要用到的 dll 文件拷贝到 C:\Windows\System32 目录下即可,可对我这情况不管用,于是继续 Google,在 MSDN 的论坛上发现了这个帖子(http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=537615&SiteID=1),有位 阅读全文
posted @ 2011-10-31 11:21 盗艹人 阅读(10890) | 评论 (4) 编辑
sizeof
摘要: 简介 Pascal的一种内存容量度量函数: C语言中判断数据类型长度符用法 Var a : array[1..10000] of longint; Begin Writeln(SizeOf(a)); End. 输出:40000 如果定义Integer,则输出:20000 c语言中判断数据类型长度符的关键字 用法 sizeof(类型说明符,数组名或表达式); 或 sizeof 变量名 1. 定义: sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为: The sizeof keyword gives the a 阅读全文
posted @ 2011-07-21 21:31 盗艹人 阅读(144) | 评论 (0) 编辑
VC6.0之Debug调试总结
摘要: 1.如何显示Debug工具栏窗口?①:在任意工具栏的位置,单击鼠标右键,勾选Debug项②:Tools---->Customize--àToolbars--àDebug--àclose引申:工具栏和工具条的区别?一个工具栏可以放置多个工具条。2.关于断点调试F9:设置或去除断点。如果当前行未设置断点,按F9可在当前行设置断点,如果当前行已设置断点,按F9则为去除断点设置。Alt+F9:调出断点设置窗口在这个窗口里可以设置断点,去除所有已经设置的断点或者单个断点,也可以转到已设置的断点处,通过按钮Edit Code,可以设置需要被计算的表达式,可以设置,监视( 阅读全文
posted @ 2011-07-20 10:55 盗艹人 阅读(3123) | 评论 (0) 编辑
与临时对象的斗争(下)
摘要: 作者:唐风出处:http://www.cnblogs.com/liyiwen本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。在上篇里,我们看到了 (N)RVO 和右值引用,下面我们来看看表达式模板。Expression Template(表达式模板,ET)如果有“系统地”学习过 C++ 的模板编程,那么你应该已经知道 Expression Template 这个“东西”。在模板圣经《C++ templates》的第 18 章专门用了一整章来讲这个技巧,(是的,我认为它是一种技巧)。足以见得它比较复杂,也很重要。说起 Expr 阅读全文
posted @ 2011-07-19 10:47 盗艹人 阅读(156) | 评论 (0) 编辑
与临时对象的斗争(上)
摘要: 作者:唐风出处:http://www.cnblogs.com/liyiwen本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。C++ 是一门以效率见长的语言(虽然近来越来越多的人“不齿”谈及效率,我深以为不然,在某一次的程序编写中不对效率锱铢必较并不意味意味着我们就不应该追求更多的更好的做法)。总之吧,相比起其它语言,程序员们在使 C++ 的时候会更加有意识地去避免没有效率的做法。在C++ 的程序中,临时对象的产生就是损及效率的“恶因”之一,因此也产生出一些意思的技术和优化手段,这篇文章里我总结一下最近在这些方面学习的一些收获 阅读全文
posted @ 2011-07-19 10:45 盗艹人 阅读(433) | 评论 (0) 编辑
关于C++中的临时对象问题
摘要: C++中真正的临时对象是看不见的,它们不出现在你的源代码中,临时对象的产生在如下几个时刻:1.用构造函数作为隐式类型转换函数时,会创建临时对象。例:class Integer{public:Integer(int i):m_val(i){}~Integer(){}private:intm_val;};void Calculate(Integer itgr){// do something}那么语句:inti = 10;Calculate(i);会产生一个临时对象,作为实参传递到Calculate函数中。2.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象。如:I 阅读全文
posted @ 2011-07-19 10:14 盗艹人 阅读(5507) | 评论 (2) 编辑
C++ 中的位操作符
摘要: 绪言我注意到一些人好像对位操作符不太清楚,所以我决定写篇简单的指南,说明如何使用他们。位简介bits,你会问他们是什么呢? 其实,简单说,我们在电脑上处理各种工作都是由许多1和0完成的。我们在电脑上存储的所有数据都是用bits来表示的。一个byte是用8个bit表示的,一个WORD是用两个BYTE表示的,或者16个bit。一个DWORD是用两个WORD表示的,或者32个bit.0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 || | | | || |+- bit 31 | | | bit 0 -+| | | | | 阅读全文
posted @ 2011-07-15 20:10 盗艹人 阅读(1604) | 评论 (0) 编辑
C++中值传递、指针传递、引用传递的总结
摘要: 1. 值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。void swap(int a,int b){ int temp; temp=a; a=b; b=temp; cout<<a<<’ ‘<<b<<’\n’;}int main(){ int x=1; int y=2; swap(x,y); cout<<x<<’ ‘<<y<<’\n 阅读全文
posted @ 2011-07-14 14:32 盗艹人 阅读(2852) | 评论 (1) 编辑
C++ 常量类型 const 详解
摘要: 1、什么是const?常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const?const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用?(1)可以定义const常量,具有不可变性。 例如:const int Max=100; int Array[Max];(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) {.........} 编译器就会知道i是一个常量,不允许修改;(3)可以避免意 阅读全文
posted @ 2011-07-14 13:44 盗艹人 阅读(1608) | 评论 (0) 编辑
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
摘要: 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动态地扩展和收缩。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区,全局变量... 阅读全文
posted @ 2011-06-29 09:59 盗艹人 阅读(37986) | 评论 (11) 编辑
sprintf你知道多少
摘要: 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使 阅读全文
posted @ 2011-06-22 15:42 盗艹人 阅读(441) | 评论 (1) 编辑
C语言的重要概念
摘要: 一、C语言的指针1.指针说明 指针是包含另一变量的地址的变量。 (1)int *p p是一个指针,指向一个整型数。 (2)int *p() p是一个函数,该函数返回一个指向整数的指针。 (3)int (*p)() p是一个指针,该指针指向一个函数,这个函数返回一个整数。 (4)int *p[] p是一个数组,该数组的每一个元素是指向整数的指针。 (5)int (*p)[] p是一个指针,该指针指向一个数组,这个数组的每一个元素是一个整数。 (6)int *(*p)() p是一个指针,该指针指向一个函数,这个函数返回一个指向整数的指针。2.指针的初始化(赋地址) (1)通过符号&取变量( 阅读全文
posted @ 2011-06-22 11:08 盗艹人 阅读(534) | 评论 (2) 编辑

你可能感兴趣的:(C++)