string char* char[]之间的转换

折月煮酒 提交于 2020-03-11 13:09:30

一、string转为char* char[]
主要通过string类内部的几个方法:data(),c_str(),copy
1、data()方法返回 const char* 格式的字符串数据
比如

    string str = "world";
	const char *p = str.c_data();//要加const或者等号右边用char*
	char *q = (char*)str.c_data();//同上,要加const或者等号右边用char*
	cout << p << endl << q << endl;
	q[5] = '!'; q[6] = '\0';//手动加结尾
	cout << q << endl;

在这里插入图片描述
根据上面运行结果,可知,通过char转换,可以继续进行后续修改。
2、c_str()方法返回 const char
格式的字符串数据
代码就不贴了,将data()换为c_str()即可,运行结果是一样的

3、copy方法

    string str = "world123";
	char p[6];//此处不能使用char* p;或者char* p="       ";或者char* p="";
	str.copy(p, 5, 0);
	*(p + 5) = '\0';
	cout << p << endl;

以上代码在部分IDE上可能报错C4996,可以通过修改项目属性-C+±预处理器-预处理器定义无视warning,在预处理器定义加上_SCL_SECURE_NO_WARNINGS即可。(想试试copy方法的同学建议试完后改回来)
在这里插入图片描述在这里插入图片描述
注意!本方法需要手动加’\0’,并且不能copy到char*;

二、char*、char[]转为string
直接赋值

 string s1,s2;
 char *p = "hello";//直接赋值
 char q[6]="world";
 s1 = p;
 s2 = q;
 cout << s1 <<endl << s2 << endl ;

在这里插入图片描述
三、string转为char[]
通过string类的length()方法,for循环赋值即可

C++中string char* int 之间的转换方法:
https://blog.csdn.net/jojozym/article/details/104791775

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!