C/C++
myKernel
这个作者很懒,什么都没留下…
展开
-
设置vi中tab键的空格数和行号
按一次tab键默认跳8个空格,通过设置把它换成4个空格~/vi .vimrc 中 增加 set ts=4 或者详细设置 set ts=4 ht=4 sw=4(老版本vi)[注] vi 的配置文件为 ".vimrc "或 ".exrc " 用户可以编辑它,使这些设置在每次启动 vi 时,都有效。原创 2012-03-15 21:03:23 · 4416 阅读 · 0 评论 -
string类在使用时的一点注意事项
char str[3] = "Aa";string strTest = str;// 这样是可以完成拷贝操作的,此时strTest == Aa。// 当然 strTest[0] 会取得字符A,而 &strTest[0] 会类似取得首指针,// 甚至可以进行这样的操作,但是不建议这么做: string strTest02 = ""; strcpy ( &(strTes原创 2012-11-06 19:16:24 · 584 阅读 · 0 评论 -
FTP协议的命令 与 返回码
FTP命令命令描述ABOR中断数据连接程序ACCT 系统特权帐号ALLO 为服务器上的文件存储器分配字节APPE 添加文件到服务器同名文件CDUP 改变服务器上的父目录CWD 改变服务器上的工作目录DELE 删除服务器上的指定文件HELP 返回指定命令转载 2012-11-05 15:06:52 · 3157 阅读 · 0 评论 -
Windows API GetTickCount函数
函数功能:GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是2^32 ms约为49.71天,原创 2012-10-26 13:39:58 · 2872 阅读 · 0 评论 -
Windows API的时间结构体、时间转换及时间获取
时间格式:DosDateTime FileTime SystemTime | | | 使用上面 LocalFileTime FileName 系统时间和本地时间 格式的时间: (本地时区) (UTC)转载 2012-10-23 12:00:28 · 1097 阅读 · 0 评论 -
ntohs, ntohl, htons,htonl的比较、详解
ntohs =net to host short int 16位 htons=host to net short int 16位 ntohs =net to host long int 32位 htonl=host to net long int 32位 简述: 将一个无符号短整形数从网络字节顺序转换为主机字节顺序。 #inclu转载 2012-10-18 11:37:04 · 1177 阅读 · 0 评论 -
网络字节序与主机字节序
不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说转载 2012-10-18 11:29:32 · 509 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
首先要说讲述TCP/IP的书很多,其中有3泰书很全。分别是《TCP/IP详解》三卷本,《用TCP/IP进行网际互连》三卷本,《TCP/IP指南》+《IPv6》四卷本其中TCP/IP详解的作者还写了另外2本经典著作,《Unix环境高级编程》,《Unix网络编程》作者W.Richard Stevens个人网站 http://www.kohala.com/大师作品部部经典,可惜1999转载 2012-10-19 11:29:17 · 759 阅读 · 0 评论 -
C++ STL map的使用
1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,0原创 2012-10-17 10:13:37 · 14482 阅读 · 0 评论 -
正则表达式常见的一些符号含义
元字符描述.点匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。$匹配行结束符。例如正则表达式weasel$ 能够匹配字符串"He's a weasel"的末尾 但是不能匹配字符串"They are a bunch of weasels."^匹配一行的开始。例如正则表原创 2012-09-18 22:06:06 · 7622 阅读 · 0 评论 -
union(C/C++)使用的一些总结
1、联合里面那些东西不能存放? 我们知道,联合里面的东西共享内存,所以静态、引用都不能用,因为他们不可能共享内存。2、类可以放入联合吗? 我们先看一个例子: class TEST { public: TEST():data(0) { } private: int data; };TYPEdef union _TEST {TEST TEST; }UI; 编译原创 2012-08-01 15:54:54 · 1089 阅读 · 0 评论 -
WindowsAPI - CreateThread的说明
HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes DWORD dwStackSize, // initial thread stack size LPTHREAD_START_ROUTIN原创 2012-08-06 17:49:21 · 852 阅读 · 0 评论 -
类似于“vc80.idb 不是创建此预编译头时使用的 idb 文件,请重新创建预编译头”的解决方案
1、关于预编译错误 fatal error C1083: Cannot open precompiled header file解决方法,一般在属性-》c/c++ ->预编译头中-》不适用预编译头 详细解释:http://panpan.blog.51cto.com/489034/1043972、修改预编译文件(一般是stdafx.h和stdafx.cpp),就会出现预编译错误,一般为如转载 2012-08-06 17:10:32 · 10895 阅读 · 0 评论 -
[windows环境C/C++]宽窄字节/串的转换时需要注意的问题
宽窄字节/串的转换:1、Windows环境C/C++中,实现宽窄字符串转换,可以使用W2A和A2W2、要包含头文件 例:#include "atlconv.h"3、还要引入lib库 例:#pragma comment ( lib, "atls.lib" )原创 2012-08-06 11:00:48 · 1384 阅读 · 0 评论 -
strcpy 和 strncpy
Strcpy和Strncpy的区别- - 第一种情况:char* p="how are you ?";char name[20]="ABCDEFGHIJKLMNOPQRS"; strcpy(name,p); //name改变为"how are you ? OPQRS " ====>错误!strncpy(name,p,sizeof(name)) //name转载 2012-11-07 09:53:20 · 558 阅读 · 0 评论 -
string类中关于字串替换的实现(find后再replace的方法)
C++的string提供了replace方法来实现字符串的替换#include #include using namespace std; string& replace_all(string& str,const string& old_value,const string& new_value) {原创 2012-11-30 18:02:01 · 4121 阅读 · 0 评论 -
Android中的强指针和弱指针
在Android的源代码中,经常会看到形如:sp、wp这样的类型定义,这其实是Android中的智能指针。智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。在C++编程中,有两个很让人头痛的问题:一是忘记释放动态申请的对象从而造成内存泄露;二是对象在一个地方释放后,又在别的地方被使用,从而引起内存访问错误。程序员往往需要花费很大精力进行精心设计,以避免这些问题的出现。转载 2014-08-11 17:43:43 · 544 阅读 · 0 评论 -
C/C++中可变参数函数的实现
在C语言的stdarg.h头文件中提供了三个函数va_start, va_end,va_arg和一个类型va_list。利用它们,我们可以很容易实现一个可变参数的函数。首先简单介绍一下这三个函数。假设现在有一个名为f的函数,其函数定义为:void f(int a, int b, ...)那么,在函数的内部,为了获得这些可变参数,就需要利用到va_start、va_arg和va_end三个函转载 2014-04-19 12:38:30 · 813 阅读 · 0 评论 -
剑指offer---读后总结
例题第4题,替换空格,输入“we are happy”,输出“we%20are%20happy” solution:先扫描一遍旧的char数组,数一下有多少个空格,新数组长度就出来了。然后从末尾向前复制。时间,空间都是O(n); 第5题,从尾到头打印链表 solution1:如果允许改动链表,把整个链表反向 solution2:我自己直接想到的是用栈来存储 solution转载 2013-12-09 13:10:32 · 793 阅读 · 0 评论 -
TCP的三次握手/四次挥手
TCP 三次握手TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的SYN报文后转载 2013-12-01 19:35:25 · 740 阅读 · 0 评论 -
深入理解typedef
typedef作为类型定义关键字,用于在原有数据类型(包括基本类型、构造类型和指针等)的基础上,由用户自定义新的类型名称。 在编程中使用typedef的好处,除了为变量取一个简单易记且意义明确的新名称之外,还可以简化一些比较复杂的类型声明。比如: typedef int INT32;将INT32定义为与int具有相同意义的名字,这样类型IN转载 2013-11-05 22:05:17 · 638 阅读 · 0 评论 -
深入理解指针函数
1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。转载 2013-11-05 22:07:34 · 468 阅读 · 0 评论 -
windows上代码里中文注释拷贝到liunx下出现乱码的解决方法
windows上编写好的代码里中文(或日语)注释拿到liunx下会出现乱码。在这里提出一个新手最爱的方法,来解决这个问题:把这些windows上的代码,以记事本打开另存为新的文件,注意将编码格式选择为UTF-8。将所有转换格式后的文件拷贝到linux,解决问题。原创 2013-03-19 18:36:10 · 984 阅读 · 1 评论 -
sockaddr_in强转为sockaddr
struct sockaddr是通用的socket地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节,指向sockaddr_in结构的指针也可以指向sockaddr,网络编程中通过socket建立网络通信时,往往会将sockaddr_in*强转为sockaddr*例如:bind函数,等等强转为sockaddr原创 2013-03-15 14:34:33 · 2697 阅读 · 1 评论 -
linux下编译出现 "警告:隐式声明与内建函数'exit'不兼容" 的解决方法
编译后就出现警告:隐式声明与内建函数’exit’不兼容的现象可尝试将 stdlib.h 包含进来,就没问题了。原创 2013-03-15 21:45:03 · 2457 阅读 · 0 评论 -
perror, errno, strerror 三个函数的说明
#include // void perror(const char *msg);#include //errno#include // char *strerror(int errnum);errno 是错误代码,在 errno.h头文件中;perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符);strerror是通过参数 e原创 2013-03-15 13:47:28 · 1029 阅读 · 0 评论 -
Linux C/C++中errno含义
#include #include /* for strerror */#include int main(int argc, char ** argv){ int i = 0; for(i = 0; i < 256; i++) printf("errno.%02d is: %s/n", i, strerror(i)); return 0;}// st原创 2013-03-14 10:02:30 · 6603 阅读 · 0 评论 -
两个非常简单的输出随机数的例子
//两个非常简单的输出随机数的例子,代码片段//生成(0,1)间的随机数{ ... srand((unsigned)time(NULL)); double dRandNum = ((double)rand())/RAND_MAX; printf("d=%.3f\n", dRandomNum); ...}//生成(0,N)间的随机数(N >= 1){ ... srand(原创 2013-03-12 09:41:16 · 975 阅读 · 0 评论 -
Linux下使用Eclipse编译C/C++代码时遇到问题的说明
在Eclipse IDE环境下编译C/C++ Project时,出现类似 “cc1: 错误:要生成依赖项,您必须指定 -M 或 -MM”到情况 出现这个问题,Debug编译时有错,优化和调试代码时产生到问题! 去“Project——Property——c/c++ buider——settings“。然后在GCC C++ Compiler里(如果是c,则修改GCC C Compile原创 2013-02-15 17:56:20 · 856 阅读 · 0 评论 -
C语言字符串,字符转数字,数字转字符
在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串。字符串是以“/0”作为结束符。C/C++提供了丰富的字符串处理函数,下面列出了几个最常用的函数。 ● 字符串输出函数puts。 ● 字符串输出函数gets。 ● 字符串连接函数strcat。 ● 字符串复制函数strcpy。 ● 测字符串长度函数strlen。字符串是面试的重点考查部分的相关知识,转载 2012-12-12 13:40:06 · 2568 阅读 · 0 评论 -
Windows环境编程 - STARTUPINFO的说明
typedef struct _STARTUPINFO{ DWORD cb; //包含STARTUPINFO结构中的字节数.如果Microsoft将来扩展该结构,它可用作版本控制手段. 应用程序必须将cb初始化为sizeof(STARTUPINFO) PSTR lpReserved; //保留。必原创 2012-08-06 09:59:21 · 1088 阅读 · 0 评论 -
C/C++中System函数的一点说明
使用System函数时,当将包含路径部分用双引号引起来;例如:c盘的program files文件夹中建了一个a.txt文件 可以使用这种形式打开 system("c:\\\"program files\"\\a.txt");[注意] 每个双引号前要有转义字符\前缀[注意]system是调用dos控制台命令 C:\\abc de\\aa.tx原创 2012-07-20 17:14:56 · 1162 阅读 · 0 评论 -
用循环的方法求一个十进制数对应二进制中含有1的个数
int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}x = 9999 时,x-1=9998,用二进制表示1001110000111110011100001110当他们执行&运算原创 2012-04-16 00:27:06 · 1107 阅读 · 0 评论 -
c++中父类的静态成员变量/函数在子类中的使用
c++中父类的静态成员变量/函数在子类中的使用时,子类是可以共享父类中静态成员变量/函数的当然有一个前提,父类中的静态成员函数/变量应该为公有的(pulic),或当为private时,应提供公有的接口函数来调用;原创 2012-04-15 17:57:02 · 8475 阅读 · 0 评论 -
编译时多态和运行时多态
C++支持两种多态性:编译时多态:程序运行前发生的事件 —— 函数重载、运算符重载 ——静态绑定 运行时多态:程序运行时发生的事件 —— 虚函数机制 ——动态绑定多态性是面向对象程序设计的重要特征之一。所谓多态性是指当不同的对象收到相同的消息时,产生不同的动作。C++的多态性具体体现在运行和编译两个方面,在程序运行时的多态性通过继承和虚函数来体现,而原创 2012-04-27 21:17:36 · 4562 阅读 · 1 评论 -
静态绑定和动态绑定
从实现原理上来说: 重载与静态绑定:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:functionfunc(p:integer):integer;和 function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对原创 2012-04-27 21:14:54 · 775 阅读 · 0 评论 -
什么情况下,类的析构函数应该声明为虚函数?
首先要明确:1.每个析构函数(不加 virtual) 只负责清除自己的成员。2.可能有基类指针,指向的是子类成员的情况,那么当析构一个指向子类的基类指针时,程序就不知道怎么办了。如果不加析构,只会析构掉自己基类的这部分,而子类无法析构造成内存泄漏。所以要保证运行适当的析构函数,基类中的析构函数必须为虚析构。反正你在写一个类时,将其析构函数写为虚函数总不会有错的。原创 2012-04-15 15:34:12 · 768 阅读 · 0 评论 -
构造函数为什么不可以声明为虚函数?
虚函数的意思就是开启动态绑定,程序会根据对象的动态类型来选择要调用的方法。然而在构造函数运行的时候,这个对象的动态类型还不完整,没有办法确定它到底是什么类型,故构造函数不能动态绑定。(动态绑定是根据对象的动态类型而不是函数名,在调用构造函数之前,这个对象根本就不存在,它怎么动态绑定?)原创 2012-04-15 15:20:17 · 710 阅读 · 0 评论 -
ifstream的对象 ifs 打开一个文件,关闭后,再用ifs打开一个文件的实现方法
先用ifstream ifs("1.txt");打开操作,然后ifs.close();之后准备做一个ifs.open("2.txt");但内容却读不出来(假定不用ifs1, ifs2)的解决方法:==========================================================ifstream 是有状态的对象,一个 ifstream 操作完后一般处原创 2012-03-09 00:00:27 · 9795 阅读 · 0 评论 -
rand 函数 与 srand 函数
srand()用来设置rand()产生随机数时的随机数种子。定义函数:void srand (unsigned int seed); 参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。srand48()——获取48位运算随机数(数据类型:double);原创 2011-12-26 18:43:49 · 2902 阅读 · 0 评论