char []与char *之间转换

char []转char *:直接进行赋值即可

// char[] 转char *
char str[] = "lala";
char *str1 = str;
cout << str1 << endl;

char *转char[]:字符拷贝实现,不能进行赋值操作

// char *转换为char []
const char *st = "hehe";
char st1[] = "lalalala";
strncpy(st1, st, strlen(st) + 1); // 注意加1操作
// tp = temp; //错误,不能实现
cout << st1 << endl;

char 与const char 之间转换

const char 转char :拷贝实现,不能进行赋值

// const char *转char *
const char *st = "lala";
// 直接赋值不可以
//char *st1 = st; // (不可以编译器报错)
//cout << st1 << endl;
// 另外开辟空间,将字符一个一个复制过去
char *ncstr = new char[strlen(st) + 1];
strcpy(ncstr, st);
cout << ncstr << endl;

char 转const char :直接进行赋值

// char *转const char *
char *st = "hehe"; // (编译提示警告)
const char *st1 = st;
cout << st1 << endl;

char *与string之间转换

char *转string:1)直接赋值;2)构造转换实现

// char*转换为string
// (注意,定义char *变量,并直接赋值,最好定义为const变量,否则编译器警告)
const char *st = "hello";
// 赋值转换
string st1 = st;
cout << st1 << endl;
// 构造转换
string s1(st, st + strlen(st));
cout << s1 << endl;
// 改变const char *变量值
st = "lalala";
cout << st << endl;

string转char *:赋值操作(注意类型转换)

// string转char *
string st = "My test";
//char *st1 = st; // 错误类型不同
//char *st1 = st.c_str(); // 错误类型不同
char *st1 = const_cast<char *>(st.c_str()) ;
cout << st1 << endl;

主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy();

string转char*。

  主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy();

  1.data()方法,如:

string str = "hello";
const char* p = str.data();//加const  或者用char * p=(char*)str.data();的形式

  同时有一点需要说明,这里在devc++中编译需要添加const,否则会报错invalid conversion from const char*  to char *,这里可以再前面加上const或者在等号后面给强制转化成char*的类型。

  下面解释下该问题,const char*是不能直接赋值到char*的,这样编译都不能通过,理由:假如可以的话,那么通过char*就可以修改const char指向的内容了,这是不允许的。所以char*要另外开辟新的空间,即上面的形式。

  2.c_str()方法,如:

string str=“world”;
const char *p = str.c_str();//同上,要加const或者等号右边用char*

  3.copy()方法,如:

string str="hmmm";
char p[50];
str.copy(p, 5, 0);//这里5代表复制几个字符,0代表复制的位置,
*(p+5)=‘\0’;//注意手动加结束符!!!

char * 转string。

可以直接赋值。

string s;
char *p = "hello";//直接赋值
s = p;

  这里有一点要说明,当声明了string类型变量s后,用printf("%s",s);是会出错的,因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型。所以肯定出错。

char[]与string之间转换

char []转string:1)直接赋值;2)构造转换实现

// char[]转换为string
char st[] = "hello";
// 直接赋值实现
string st1 = st;
cout << st1 << endl;
// 构造实现
string st2(st, st + strlen(st));
cout << st2 << endl;

string转char[]:拷贝实现,不能直接赋值

由于我们知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。

string pp = "dagah";
char p[8];
int i;
for( i=0;i<pp.length();i++)p[i] = pp[i];p[i] = '\0';printf("%s\n",p);cout<<p;

// string转char []
string ts = "My test1";
//char ts1[] = ts; // 错误
//char ts1[] = const_cast<char *>(ts.c_str()); // 错误
char ts1[] = "lalallalalaaaa";
strncpy(ts1, ts.c_str(), ts.length() + 1); // 注意,一定要加1,否则没有赋值'\0'
cout << ts1 << endl;
return 0;

总结

涉及到char []字符数组与其它类型转换,一般需要进行拷贝,不能直接赋值实现。char []和char *都可以通过构造新的string完成其对string的转换。涉及到到char *转换,需要注意类型一致,同时注意const的使用。

C++ 中 char[],char *,string之间转换相关推荐

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

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

  2. C#中char[]与string之间的转换

    C#中char[]与string之间的转换 原文:C#中char[]与string之间的转换 string 转换成 Char[] string ss = "abcdefg"; ch ...

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

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

  4. python bytes转换为string_Python3 中 bytes 和 string 之间的互相转换

    Table of Contents Python3 最重要的新特性大概要算是对文本(text)和二进制数据(binary data)作了更为清晰的区分.文本总是 Unicode,由 str 类型表示. ...

  5. python中时间戳、字符串之间转换详解

    [转载]python中时间戳.字符串之间转换详解 (2013-04-30 17:36:07) 转载▼ 标签: 转载 原文地址:python中时间戳.字符串之间转换详解作者:doris0920 1)秒数 ...

  6. C# char[]与string之间的相互转换

    string 兑换 Char[] string ss = "abcdefg";char[] cc = ss.ToCharArray(); Char[] 转换成string stri ...

  7. Linux环境下实现unsigned char*向string的转换

    代码 unsigned char input_data[input_data_length] = {"This is my first encrypted plaintext hello w ...

  8. c++中wstring 和 string的转换

    一.wchar_t和char的基础知识 1.C程序中使用的char类型,是占用一个字节,一共可以表示256个字符.而在32位系统中,char*是占用四个字节的,因为一个指针变量占用的存储空间为4个字节 ...

  9. [转载] python中list与string的转换

    参考链接: Python 字符串string中的isupper,islower,lower,upper 1.list转string 命令:''.join(list) 其中,引号中是字符之间的分割符,如 ...

最新文章

  1. softmax函数_数学证明深度学习激活函数从Softmax到Sparsemax
  2. 智能骨传导眼镜vue_穿戴设备迎新机遇,智能音频眼镜或将是下一个风口
  3. MySQL表最大能达到多少?
  4. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) - D Count The Bits
  5. 学习日报 day03 实体与标识符 变量与数据类型
  6. CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club
  7. Delphi ArcEngine 创建比例尺
  8. vue webpack打包后图片路径错误的解决方法
  9. 白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)
  10. CP Editor 编辑器(为竞赛而生的编辑器)的安装与配置
  11. 优维科技联合广发证券发起「CD持续交付一期项目复盘会」
  12. .NET周报【11月第4期 2022-11-30】
  13. Linux常用命令之CUT
  14. 插入新题注变乱了_关于Word题注的问题,这篇文章能解决99%!
  15. Ubuntu下Android开发——配置环境,刷机,push
  16. 全球地形数据下载分享
  17. R12_专题知识总结提炼-AP模块
  18. 小米/红米刷机过程-以红米3S为例
  19. python外星人入侵游戏图片_Python外星人入侵游戏编程完整版
  20. 海尔计算机类,分享海尔计算机类笔试题 -管理资料

热门文章

  1. LSP 语言服务协议
  2. Accepted Necklace
  3. C语言二维数组的初始化方法
  4. 1.二分排序——抓老鼠法
  5. 蓝牙Sig Mesh 概念入门⑤——Mesh通信消息格式详解
  6. Kotlin 使用 Spring WebFlux 实现响应式编程
  7. 亲爱的老狼-搜索引擎的区分及现在各大浏览器的引擎细分
  8. LeetCode 第7题:整数反转(Python3解法)
  9. 密集子图挖掘算法的相关知识
  10. ZAC深度解析:区块链技术如何重塑汽车后市场?