栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

关于string,const char*,char*的互转问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于string,const char*,char*的互转问题

首先需要明确的是:
string自带的c_str() 可以返回一个指向string对象首字符的c语言风格字符指针(const char*)
也就是说const char* 可以用来接收c_str() 的返回值,但是char* 不可以

所以有:

  1. string s 转为 const char*, char*
  • a. string s 转为 const char*
     const char* cc = s.c_str();
//(其实这样转不安全,如果s被析构了或者s内容被改了,cc要么指向一片内存垃圾,要么指向的内容被改了自己却不知道)
  • b. string s 转为 char*
	const int len = s.size();
	char* c = new char[len];
	strcpy(c, s.c_str());//亲测strcpy(c,s)不行,报错string不能转为const char*,strcpy参数列表是(char*, const char*)
  1. const char* cc , char* c 转为string
 	string s(cc);//调用string的转换(应该是)构造函数给赋值初始化掉了
 	//string s(c);
  1. const char* , char*
  • a. char* c 转为 const char* cc 可以用指针常量(底层const)指向非常量
	const char* cc = c;
  • b. const char* cc 转为 char* c 不能直接转,用strcpy()
	const int len = strlen(cc);
	char* c = new char[len+1];//多个位置放''
	strcpy(c, cc);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290416.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号