1.string转换成pchar

可以使用pchar进行强制类型转换,也可以使用StrPCopy函数

  1. var
  2. s:string;
  3. p,p1:PChar;
  4. begin
  5. s:='Hello Delphi';
  6. p:=PChar(s);
  7. ShowMessage(p);
  8. p1:=StrAlloc(Length(s)+1);
  9. StrPCopy(p1,s);
  10. ShowMessage(p1);
  11. StrDispose(p1);
  12. end;

2.pchar转换成string

pchar可以直接当string用,也可以用strpas函数转换一下

  1. var
  2. s,s1,s2:string;
  3. p:PChar;
  4. begin
  5. s:='Hello Delphi';
  6. p:=PChar(s);
  7. ShowMessage(p);
  8. s1:=p;
  9. ShowMessage(s1);
  10. s2:=StrPas(p);
  11. ShowMessage(s2);
  12. end;

3.char数组转换成string
   使用StrPas函数获取数组的首地址

  1. var
  2. c:array [0..11] of Char;
  3. s:string;
  4. begin
  5. c[0]:='H';
  6. c[1]:='e';
  7. c[2]:='l';
  8. c[3]:='l';
  9. c[4]:='o';
  10. c[5]:=' ';
  11. c[6]:='D';
  12. c[7]:='e';
  13. c[8]:='l';
  14. c[9]:='p';
  15. c[10]:='h';
  16. c[11]:='i';
  17. s:=StrPas(@c[0]);
  18. ShowMessage(s);
  19. end;

4.string转char数组

使用move或者copymemory函数

  1. var
  2. s:string;
  3. c:array of Char;
  4. i:Integer;
  5. begin
  6. s:='Hello Delphi';
  7. SetLength(c,Length(s));
  8. //Move(s[1],c[0],Length(s));//move和CopyMemory都行
  9. CopyMemory(@c[0],PChar(s),Length(s));
  10. for i:=Low(c) to High(c) do
  11. begin
  12. ShowMessage(string(c[i]))
  13. end;
  14. end;

5.char数组转pchar

  1. var
  2. c:array [0..11] of Char;
  3. p:PChar;
  4. begin
  5. c:='Hello Delphi';
  6. //p:=@c[0];
  7. p:=PChar(@c[0]);
  8. ShowMessage(StrPas(p));
  9. end;

6.pchar转char数组

使用move或者CopyMemory函数

    1. var
    2. s:string;
    3. p:PChar;
    4. c:array of Char;
    5. i:Integer;
    6. begin
    7. s:='Hello Delphi';
    8. p:=PChar(s);
    9. SetLength(c,Length(s));
    10. //Move(p^,c[0],Length(s));//move和CopyMemory都行
    11. CopyMemory(@c[0],p,Length(s));;
    12. for i:=Low(c) to High(c) do
    13. begin
    14. ShowMessage(string(c[i]))
    15. end;
    16. end;

char、pchar、string互相转换的更多相关文章

  1. 转:char*, char[] ,CString, string的转换

    转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...

  2. char[],char *,string之间转换

    char []与char *之间转换 char []转char *:直接进行赋值即可 // char[] 转char *char str[] = "lala";char *str1 ...

  3. char*,const char*和string 三者转换

    1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua&quo ...

  4. 【转载】char*,const char*和string 三者转换

    本文转自 http://blog.csdn.net/perfumekristy/article/details/7027678 const char* 和string 转换 const char*转换 ...

  5. C# char[]与string互相转换的两种方法

    1.string转换为char[]:char[] string.ToCharArray(); static void Main(string[] args)        {            s ...

  6. C# char 和string之间转换

    har数组要转换成string可没想象的那么容易.需要使用到System.Text.StringBuilder!实例如下: char[] temp={a,b,c};System.Text.String ...

  7. 字符串后面空字符的问题(char*与string的转换)

    今天AC了不少题,困扰已久的Time limit error 也解决了,记住下次用STL容器的时候一定要清空容器. 其次是字符数组与字符串的浅谈. 字符数组是以'\0'结尾的,所以在字符数组赋值给字符 ...

  8. CString与string、char*的区别和转换

    转自:http://blog.csdn.net/luoweifu/article/details/20232379 我们在C++的开发中经常会碰到string.char*以及CString,这三种都表 ...

  9. 【转】CString与string、char*的区别和转换

    我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...

随机推荐

  1. 一个超几何函数$_3F_2$的积分

    \[\Large\displaystyle \int_0^\infty{_3F_2}\left(\begin{array}c\dfrac58,\dfrac58,\dfrac98\\\dfrac12,\ ...

  2. [LeetCode]1.Two Sum 两数之和&&第一次刷题感想

    ---恢复内容开始--- 参考博客: https://www.cnblogs.com/grandyang/p/4130379.html https://blog.csdn.net/weixin_387 ...

  3. Python 多任务(线程) day2 (1)

    结论:多线程全局变量是共享的 (03) 因为多线程一般是配合使用,如果不共享,那么就要等到一个线程执行完,再把变量传递给另一个线程,就变成单线程了 但是如果多个线程同时需要修改一个全局变量,就会出现资 ...

  4. python web django 2nd level -- 待更新

    练习代码位置 实例代码位置 --> app: myblog Form 利用Form表单验证,自己写的html 思路: 新建一个类 LoginForm(forms.Form) 新建对象 obj = ...

  5. Reverse-Encrypted-Shell-via-Openssl

    目录 0x01 简介 0x02 使用openssl反弹加密shell 0x01 简介 使用常规NC或者其他常规的方法反弹shell,由于流量都是明文的,很容易被网络防御设备检测到,因此需要对传输内容进 ...

  6. 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:RNN和CNN混合的鸡尾酒疗法提升网络运行效率

    from keras.layers import model = Sequential() model.add(embedding_layer) #使用一维卷积网络切割输入数据,参数5表示每各个单词作 ...

  7. 获得APP的包名package和activity

    方法一: Aapt dumpbadging xxxx.apk(包的路径) 第一个框为包名 第二个框为主Activity名 方法二: 如果你装了Appium 可以这么操作下 进入设置页,选择APK  路 ...

  8. Python socket day2

    接收数据 需要一个端口  (端口大于1024  1024一下的端口为特殊端口)  (当同一个端口同一时间只能被一个使用) 创建一个套接字  s = socket.socket(AF_INET,SOCK ...

  9. 【译】高级T-SQL进阶系列 (三)【中篇】:理解公共表表达式(CTEs)

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 一个简单的CTE例子 如前所述,CTE‘s提供给你了一个方法来更容易的书写复杂的代码以提高其可读性.假设你有列表 ...

  10. 洛谷 P1076 寻宝(模拟 && 剪枝)

    嗯... 题目链接:https://www.luogu.org/problem/P1076 这道题的题意首先太难理解...并且细节太多... 可以用b[i][j]记录每个指示牌上的数字,a[i][j] ...