C++数据类型转换(string、char*、char[]相关)

在这里插入图片描述

1、string转const char*

std::string str = "HelloWorld!";     //初始化string类型,并具体赋值
const char* constc = nullptr;         //初始化const char*类型,并赋值为空
constc= str.c_str();                 //string类型转const char*类型

2、string转char[]

//方法一
std::string str = "HelloWorld!";      //初始化string类型,并具体赋值
char arrc[20] = {0};                   //初始化char[]类型,并赋值为空
for (int i = 0; i < str.length(); i++) //string类型转char[]类型
{
    arrc[i]=str[i];
}
//注意:若数组arr没有初始化,则最后一定要加上结束符arr[str.length()] = '\0';否则arr最后可能出现乱码。
//方法二(推荐)
std::string str = "HelloWorld!";      //初始化string类型,并具体赋值
char arrc[20] = {0};                   //初始化char[]类型,并赋值为空
strncpy(arrc, str.c_str(), sizeof(arrc) - 1);//strncpy字符串拷贝安全写法
arrc[sizeof(arrc) - 1] = 0; //即string先转化为char*,再转化为char[]

3、char*转string

char* c = "HelloWorld!";           //初始化char* 类型,并具体赋值
std::string str;                   //初始化string类型
str= c;                            //char*类型转string类型

4、char * 转const char *

char* c = "HelloWorld!";         //初始化char* 类型,并具体赋值
const char* constc = nullptr;     //初始化const char* 类型,并具体赋值
const c= c;                       //char*类型转const char* 类型

5、char*转char[]

char* c = "HelloWorld!";         //初始化char* 类型,并具体赋值
char arrc[20] = { 0 };           //初始化char[] 类型,并具体赋值
strncpy_s(arrc,c,20);             //char*类型转char[] 类型

6、char[]转为其他类型

char arrc[20] = "HelloWorld!";            //初始化char[] 类型,并具体赋值
std::string str;                          //初始化string
const char* constc = nullptr;              //初始化const char*
char*c = nullptr;                          //初始化char*

str= arrc;                                //char[]类型转string类型
constc= arrc;                             //char[]类型转const char* 类型
c= arrc;                                  //char[]类型转char*类型

7、QString与String互转

std::string s = qstr.toStdString();//QString转换String
QString qstr2 = QString::fromStdString(s);//String转换QString

总结:
1、变成string,直接赋值。
2、char[]变成别的,直接赋值。
3、char变const char容易,const char变char麻烦。<const_cast><char*>(constchar*);
4、string变char要通过const char中转。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值