Pchar 、char、string有什么区别?与转换
2011-08-20 09:04
369 查看
Char是单个字符;
PChar 就是指向一个以Null 结尾的每个字符为一个字节的字符串的指针。 (可以看成是一个字符串)
String是字符数组,以字符#0结尾;
Char只占一字节的空间,而Pchar保存的是一个指针在现在32位的系统中占有1个指针字节的大小。
type PChar=^Char;
PChar类型是一个指向Char的指针,并使用Delphi的扩展语法.它也能够作为一个String或者
是一个Char数组指针来对待.
1.PChar最经常的使用方式就是作为用C或C++编写的DLL,如Windows API的一个参数类型.
2.可以把一个PChar作为一个Char数组指针来对待.数组下标是Integer的子区间,从零开始.
Delphi不对该数组提供任何边界检查.通常字符串的结束用#0字符来表示.
3.通常通过与INC和DEC过程相似的加减整数来完成对PChar指针的算术运算.
长字符串转换到PChar不是自动的。他们之间的不同点导致他们的转换存在问题。
1,长字符串是引用计数的,而PChar不是
2,赋值给长字符串是数据的拷贝,而PChar是指向数据的指针。
3,长字符串是空止符结尾,并包含有字符串的长度。而PChar是简单的空止符结尾。( 空止符结尾指以#0
结尾)
//举例:
转换:
string是delphi内定义类型,pchar则是一个指针字符串
,pchar 好像后缀有#0。相互转换的话strpas(pchar);//pchar转成string
strpcopy(pchar,string); 或直接pchar(string) //string转成pchar
string类型转换为char类型
char --> String[0]
//举例
1、使用指向字符串的指针,如果不是以0结尾,运行时就会出现错误。为了避免这种错误,需要在字符串结尾人工加入0 即char(0),或用strpcopy函数在字符串结尾自动加0。
例3: 用strpcopy函数赋值会在字符串s结尾自动加0。
PChar 就是指向一个以Null 结尾的每个字符为一个字节的字符串的指针。 (可以看成是一个字符串)
String是字符数组,以字符#0结尾;
Char只占一字节的空间,而Pchar保存的是一个指针在现在32位的系统中占有1个指针字节的大小。
type PChar=^Char;
PChar类型是一个指向Char的指针,并使用Delphi的扩展语法.它也能够作为一个String或者
是一个Char数组指针来对待.
1.PChar最经常的使用方式就是作为用C或C++编写的DLL,如Windows API的一个参数类型.
2.可以把一个PChar作为一个Char数组指针来对待.数组下标是Integer的子区间,从零开始.
Delphi不对该数组提供任何边界检查.通常字符串的结束用#0字符来表示.
3.通常通过与INC和DEC过程相似的加减整数来完成对PChar指针的算术运算.
长字符串转换到PChar不是自动的。他们之间的不同点导致他们的转换存在问题。
1,长字符串是引用计数的,而PChar不是
2,赋值给长字符串是数据的拷贝,而PChar是指向数据的指针。
3,长字符串是空止符结尾,并包含有字符串的长度。而PChar是简单的空止符结尾。( 空止符结尾指以#0
结尾)
//举例:
var pc: PChar; begin pc := 'ABCD' + #0 + 'EFGHIJKLMNOPQRSTUVWXYZ'; ShowMessage(pc); {ABCD} end;
转换:
string是delphi内定义类型,pchar则是一个指针字符串
,pchar 好像后缀有#0。相互转换的话strpas(pchar);//pchar转成string
strpcopy(pchar,string); 或直接pchar(string) //string转成pchar
string类型转换为char类型
char --> String[0]
//举例
procedure TForm1.Button1Click(Sender: TObject); var ch:array [0..5] of char; str:string; i:integer; begin str :='123456'; move(str[1],ch,length(str));//Move说明:Move(从字符串的多少位开始移,移到目标,移动多少个长度或大小,注意sizeof与legth的区别) for i:=0 to 5 do edit1.Text :=edit1.Text + ch[i];//show:123456 //move(str[3],ch,4);//ch=3456 end;
1、使用指向字符串的指针,如果不是以0结尾,运行时就会出现错误。为了避免这种错误,需要在字符串结尾人工加入0 即char(0),或用strpcopy函数在字符串结尾自动加0。
例3: 用strpcopy函数赋值会在字符串s结尾自动加0。
{s[0]=4 s[1]='n' s[2]='e' s[3]='w' s[4]=0;} {p-->'new'} var s:string; p:pchar; begin p:=@s[1]; strpcopy(p,'new');{strpcopy函数在字符串结尾自动加0} label1.caption:=strpas(p);{new} label2.caption:=s;{new} //label3.caption:=intTostr(integer(s[0]));{4} end;
相关文章推荐
- 在delphi中Char,PChar,PByte,Byte,String的相互转换示例
- delphi中String,PChar,PByte,Array of Char,Array of Byte 转换
- java中,char[ ] subStr=new char[8]是什么意思?跟用String创建的字符串有啥区别?
- char* char[]及string的区别及相互转换
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- PChar与String的区别及互相转换
- String,Cstring和char*的区别和转换和char,wchar_t,TCHAR的区别
- C++ char * 和char[]的区别以及怎样与string类型进行转换
- 在delphi中Char,PChar,PByte,Byte,String的相互转换示例
- 在delphi中Char,PChar,PByte,Byte,String的相互转换示例
- char*、char[]及string的区别及相互转换
- string 和 char *两者的区别是什么 ?什么时候用string好? 什么时候用 char * 合适?什么时候同时都能用?
- char*,const char*和string的区别以及相互转换
- char[],*char, string, cstring有什么区别?
- CString、string、char*之间的区别和转换
- delphi pchar char byte string转换问题
- char* char[]及string的区别及相互转换
- delphi char数组、string和Pchar的相互转换
- Char Pchar String的区别
- string 和 char *两者的区别是什么 ?什么时候用string好? 什么时候用 char * 合适?什么时候同时都能用?