随手记录
文章平均质量分 67
HAN-Kai
这个作者很懒,什么都没留下…
展开
-
利用excel批量修改文件名
首先,在cmd下进入文件所在的文件夹原创 2014-06-05 14:33:43 · 7924 阅读 · 0 评论 -
char* p="abc"与char p[] = "abc"区别
见注释:#includeusing namespace std;int main(){ char* ptr="abcd";//"abc"是字符串常量,存储在常量区,ptr指向常量区的地址 cout<<ptr<<endl; cout<<ptr[1]<<endl; // ptr[1]='x'; //出错!!由于是常量区地址,所以不能修改其值 cout原创 2012-11-13 15:09:44 · 1649 阅读 · 0 评论 -
一个c++的 http get 代码
代码如下(摘自:http://bbs.csdn.net/topics/320012075):#include #include#include#pragma comment(lib, "ws2_32.lib") int main(int argc, char* argv[]){ char server_name[256]= "www.163.com"; WSAD原创 2012-11-28 15:14:53 · 1491 阅读 · 0 评论 -
一个URL编码和解码的C++类
类转自:http://www.cnblogs.com/xiaoka/articles/2585189.html下面的代码实现了一个用于C++中转码的类strCoding。里面有UTF8、UNICODE、GB2312编码的互相转换。.H文件:#pragma once#include #include #include using namespace std;clas原创 2012-11-28 12:19:03 · 4173 阅读 · 0 评论 -
C++URL编码和解码
以下是url中可能用到的特殊字符及在url中的经过编码后的值:特殊字符的含义URL编码# 用来标志特定的文档位置 %23% 对特殊字符进行编码 %25& 分隔不同的变量值对 %26+ 在变量值中表示空格 %2B/原创 2012-11-28 10:45:01 · 10786 阅读 · 2 评论 -
Effective C++条款33:避免遮掩继承而来的名称 实验示例
只要成员名称一样(即使base classes和derived classes内的函数有不同的参数类型,而且不论函数是vitual或non-virtual),继承类中的名称就会遮掩base class内的名称。表现如下:#includeusing namespace std;class Base{ public: void mf1()原创 2012-10-21 20:33:16 · 1484 阅读 · 0 评论 -
char* 指针初始化小练习
代码1:#includeusing namespace std; int main(){ char* p2; p2="123456"; char* p="123456"; cout<<p<<endl<<p2<<endl; return 0;}第一种:char* p="123456";//定义并初始化,这是推荐的格式,即使原创 2012-11-27 13:55:16 · 8387 阅读 · 1 评论 -
一网打尽中文编码转换---6种编码30个方向的转换
一网打尽中文编码转换——6种编码30个方向的转换1.问题提出 在学编程序时,曾经有人问过“你可以编一个记事本程序吗?”当时很不屑一顾,但是随着学习MFC的深入,了解到记事本程序也并非易事,难点就是四种编码之间的转换。对于编码,这是一个令初学者头疼的问题,特别是对于编码的转换,更是难以捉摸。笔者为了完成毕业设计中的一个编码转换模块,研究了中文编码和常见的字符集后,决定解决"记事转载 2012-11-06 21:34:32 · 1035 阅读 · 0 评论 -
memset
功 能 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。用 法 void *memset(void *s, int ch, unsigned n);程序例 #include #inc转载 2012-10-29 00:58:04 · 735 阅读 · 0 评论 -
cons对象/指针/引用,不能调用非const成员函数
例:#includeusing namespace std;class Derived{ public: void func() const//func(int x)也可以改变x的值 { int x=0; x=x+1; //如果是mValue就不能进行原创 2012-10-27 17:01:35 · 1036 阅读 · 0 评论 -
随手memset和malloc小范例
#includeusing namespace std;int main(){ int *p; p=(int*)malloc(sizeof(int)*100); for(int i=0;i<100;i++) p[i]=i; for(int i=0;i<100;i++) cout<<p[i]<<" "; cout<<endl;原创 2012-10-29 01:05:06 · 1009 阅读 · 0 评论 -
成员函数调用全局函数,可以使用friend
成员函数调用全局函数#includeusing namespace std;void f();//1class B{ public: // friend void f();//2 void Bf() {f();}};int a=100;void f()//3{ cout<<a原创 2012-10-23 19:33:51 · 1926 阅读 · 0 评论 -
long/int型数据存储在字符数组中方法
#include#includeusing namespace std;//原理: 使用库函数,拷贝内存; void method1(){ long a=134242304; char s[4]={0}; memcpy(s,&a,sizeof(long));// printf("%x %x %x %x\n",s[0],s[1],s[2],s[3]);}原创 2012-10-18 20:21:25 · 5587 阅读 · 1 评论 -
C++多线程编程简单实例
C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize,转载 2012-10-31 16:19:27 · 790 阅读 · 0 评论 -
异常处理总结(一)
对于初学软件开发的人来说,异常处理的重要性往往会被很多人所忽视。在正规化的软件开发过程中,异常处理往往扮演了一个重要的角色。我自己学习软件开发也有两年了,在此之前没有意识到异常处理的重要性。于是为此查了一些资料,重新学习了一下异常处理。在此总结一下学习成果。 一般的,传统错误处理方法大致可以分为返回码机制和全局变量两种。 1。返回码机制 这种处理错误的方法转载 2012-10-30 20:05:18 · 885 阅读 · 1 评论 -
构造函数为什么不能是虚函数
1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数转载 2012-11-13 11:16:12 · 1216 阅读 · 0 评论 -
C++中map容器的说明和使用技巧
C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。 一、map的说明 1 头文件 #include 2 定义 map my_Map; 或者是typedef map MY_MAP; MY_MAP my_Map; 3 插入转载 2012-11-14 22:00:28 · 540 阅读 · 0 评论 -
Excel按单元格部分内容进行排序
对于如下所示的文件名在excel中进行排序,如果直接排序原创 2014-06-09 14:26:41 · 9700 阅读 · 0 评论 -
继承中的初始化表达式表
当Base类中有多个构造函数时,在Derived类的初始化表达式表中只需要使用其中一个构造函数进行初始化就可以了,不需要把Base类中的所有构造函数都进行调用。例如:#includeusing namespace std;class Base{ public: int x,y; public: Base()原创 2013-01-03 19:56:17 · 1086 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一转载 2012-12-08 18:42:37 · 1173 阅读 · 0 评论 -
带有private constructors的class不能被继承
实例:代码如下#includeusing namespace std;class Base{ private: Base(){cout<<"Base()"<<endl;}};class Derived:public Base{ public: Derived(){cout<<"Derived"<<原创 2012-11-22 18:55:50 · 1180 阅读 · 0 评论 -
结构体和类的区别
1.C的结构体和C++结构体的区别 1.1 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。 1.2 C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。 1.3 C语言的结构体是不可以继承的,C++的结构体是可以从其他原创 2012-11-21 19:25:35 · 2048 阅读 · 0 评论 -
c++前置声明小例一则
#includeusing namespace std;class B;//前置声明 A中有B class A{ public: int a; B* b; A(B*b):b(b),a(10){cout<<"A()"<<endl;}};class B//B中有A { public:原创 2012-11-21 15:56:05 · 559 阅读 · 0 评论 -
解析C++中的内部连接与外部连接
1.声明 一个声明将一个名称引入一个 作用域; 在c++中,在一个作用域中重复一个声明是合法的 以下都是声明: int foo(int,int); //函数前置声明 typedef int Int; //typedef 声明 class bar; //类前置声明 extern int g_var; //外部引用声明 class bar; //类前转载 2012-11-21 18:56:20 · 931 阅读 · 0 评论 -
特殊数据类型成员变量的初始化
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a. 常量型成员变量b. 引用型成员变量c. 静态成员变量d. 整型静态常量成员变量e. 非整型静态常量成员变量 对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。转载 2012-11-21 15:58:08 · 603 阅读 · 0 评论 -
关于C++中的前置声明
今天一朋友问及C++中的前置声明问题,下面是我给出的回答。 在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的程序将不同通过编译,编译器将会给出类似“缺少类型说明符”这样的出错提示。代码一:// Forwa转载 2012-11-21 00:17:44 · 702 阅读 · 0 评论 -
c++四舍五入函数
2.1 2.6 -2.1 -2.6floor : 不大于自变量的最大整数 2 2 -3 -3ceil :不小于自变量的最大整数 3 3转载 2012-08-20 17:13:43 · 28320 阅读 · 4 评论 -
一个类中静态容器对象的初始化问题
某网友问:“一个类中,有一个成员变量static set SET,怎么用一个1000个元素给它初始化?” 一个类中特殊的成员变量的初始化是非常需要技巧的事情,以前针对这个问题专门写过一篇博文:特殊数据类型成员变量的初始化但这篇博文,并没有包括上面那位网友提出的问题,为此给出以下代码:#include #include using namespace std;转载 2012-11-21 00:14:31 · 1631 阅读 · 1 评论 -
friend成员函数不受public/protected/private的限制
示例代码如下:#includeusing namespace std;class B{ public: B(int a,int b):bx(a),by(b){} private: int bx,by; // friend void testFriend(B& b);};void t原创 2012-11-20 23:54:39 · 994 阅读 · 0 评论 -
html表格详解
html表格详解 2010-08-28 17:49HTML表格用表示。一个表格可以分成很多行(row),用表示;每行又可以分成很多单元格(cell),用表示。这三个Tag是创建表格最常用的Tag。两行(Row)三列(Column)的表格100200300400500600border属性在缺省情况下,如果不设置表格的边界,表格是不显示转载 2012-11-20 11:20:31 · 2094 阅读 · 0 评论 -
char型数据存储成Int(16进制值相互转换)
在一个报文里面以两个字节来存储一个数据,表示整形的数据。方法如下:#includeusing namespace std;int main(){ char a=0x80; char b=0x00; cout<<(int)(a|b<<8)<<endl;//出问题了,本来应该是128,结果成了-128 cout<<(int)((unsigned char)a|(unsigned原创 2012-11-05 21:39:05 · 5643 阅读 · 0 评论 -
异常处理总结(三)- 代价和优势
并不是每个C++程序都应该使用异常处理,因为抛出异常不像正常函数调用那样快,所以异常处理应该用在独立开发的不同程序部分之间,用于不正常情况的通信。如果程序实现者遇到一种不能局部处理的意外情况,他可能会抛出一个异常来通知调用者。由于对一个异常的认定没有一个固定的标准,对于在栈满时压入一个值的操作来说,可以认为这是个异常而throw出来,也可以认为这是个正常的动作,把栈扩大后再push。异常处理是容错转载 2012-10-30 20:09:09 · 708 阅读 · 0 评论 -
异常处理总结(二)- exception specification
异常规范(exception specification)提供了一种方案,它能够随着函数的声明列出函数可能抛出的异常,保证函数不会抛出任何其他的异常。 一个异常规范的违例不会在编译期被检查,只有在运行期被检测到。例如:void func() throw(string, int);void Doit() throw(string){ func();// 编译通过}转载 2012-10-30 20:07:31 · 1822 阅读 · 1 评论 -
const 用法总结
const用法详解面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2.转载 2012-10-12 20:58:43 · 1387 阅读 · 0 评论 -
参数传递中,指针本身不改变
记录自CSDN帖子:http://topic.csdn.net/u/20110809/11/C9C87B42-C93E-4266-ADCE-0F98A82342ED.html“void fun(char const * const p)虽然参数传递分为传值和传址,不过归根结底还是传值,传递指针不过是使函数能够修改指针所指的变量,指针本身是属于传值的,所以上面的函数声明和下面一样vo原创 2012-09-21 15:01:46 · 1843 阅读 · 0 评论 -
一个类模板特化小例子
#include using namespace std;template class A{public: A(T a) { cout<<a<<endl; }};template <>class A //注意这里要加 { public: A(int* p) { cout<<*p<<endl; }原创 2012-10-10 11:01:03 · 842 阅读 · 0 评论 -
对象/对象指针返回(local stack\heap\temp对象)
#includeusing namespace std;class Base{ public: const int b; Base():b(10) { cout<<"Base"<<endl; } Base(cons原创 2012-10-10 09:32:58 · 869 阅读 · 0 评论 -
关于对象在函数中delete的一个问题
今天发现一个问题:在函数中把对象指针delete后,程序依然能够正确运行。代码如下:#includeusing namespace std;class Base{ public: Base() { cout<<"Base"<<endl; }原创 2012-10-09 23:17:53 · 1007 阅读 · 0 评论 -
位域示例
概念引入:C语言中的位域的使用C/C++位域位域使用:位域成员不能单独被取sizeof值(编译报错),我们这里要讨论的是含有位域的结构体的sizeof,只是考虑到其特殊性而将其专门列了出来。C99规定int、unsigned int和bool可以作为位域类型,但编译器几乎都对此作了扩展,允许其它类型类型的存在。使用位域的主要目的是压缩存储,其大致规则为:1) 如原创 2012-10-08 20:24:49 · 603 阅读 · 0 评论 -
C语言中的位域的使用
一、位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对转载 2012-10-08 19:40:33 · 830 阅读 · 0 评论