char、char*、const char*、char[]、string相互转换总结

char转string、char* 、const char*、char[]

  • char转string

(46条消息) c++中char转换为string类型_potxxx的博客-CSDN博客_char转化成string

//1、构造函数里有个string(size_t,char)
char x = 'a';
string s(1,x);
//2、string初始化没char,但是push_back可以			(很好用)
string s;
s.push_back(x);
//3、string可以由char*初始化
char xx[2] = {x,0};
string s(xx)
  • char 、const char*、char[]*

(46条消息) C++ String 与 char* 相互转换_Mr.李某某的博客-CSDN博客_string转char*

char* 是一个字符串指针,指向首元素,可以改变其中的字符

const char* 也是一个字符串指针,但是是常量字符串,不可改变,比如“123456”这个字符串在赋值时,代表的就是一个const char*类型数据

**char[]**是字符数组,可以改变其中的字符

cout遇到这三个时,会直接输出全部的字符串

  • const char 转char**

//直接转会报错
char* image_window = "Source Image";
char* result_window = "Result window";
//1.先将字符使用字符数组进行存储,再使用指针
char image[] = "Source Image";
char result1[] = "Result window";
char* image_window = image;
char* result_window = result1;
//2.对变量进行强转
char* image_window =(char*) "Source Image";
char* result_window = (char*)"Result window";

示例

//类型强转
const char* ch = "123456";
cout<<ch<<endl;
char* ch2 = (char*)ch;     //与直接char* ch2 = (char*)"123456";效果相同
cout<<ch2<<endl;
// 使用ch2[2] = 'a';会报错,char* ch2 = (char*)ch;是将ch2指向了ch指向的空间,
// 而ch指向的是一个常量字符串,不可更改
  • char 转const char**

可以直接赋值

// 声明char*
char ch_array1[] = "123456";    //此处不能使用ch,
char* ch3 = ch_array1;
cout<<ch3<<endl;
// char*可以更改
ch3[2] = 'a';
cout<<ch3<<endl;
// char*转const char* 可以直接赋值
const char* ch4 = ch3;
cout<<ch4<<endl;
// 仍然可以更改
ch3[3] = 'b';
cout<<ch3<<endl;
cout<<ch4<<endl;
  • char 和const char 到char[]**

需要用strcpy函数

// char[]声明时必须指定大小,或者用字符串初始化,无法用const char*初始化
char ch_array2[10];
// const char* 到 char[]
const char* ch = "123456";
strcpy(ch_array2,ch);
cout<<ch_array2<<endl;

//char* 到 char[]
char ch_array1[] = "456789";
char* ch2 = ch_array1;    
strcpy(ch_array2,ch2);
cout<<ch_array2<<endl;
  • char[]转char 、const char**

可以直接赋值,见上面代码,得到的char*即是指向数组首元素的指针

char ch_array1[] = "456789";
char* ch2 = ch_array1;  
cout<<ch2<<endl;
const char* ch4 = ch_array1;
cout<<ch4<<endl;

(46条消息) C++ String 与 char* 相互转换_Mr.李某某的博客-CSDN博客_string转char*

  • string转const char*

可以使用string提供的c_str()或者data()函数,注意返回的是const char* 类型,不能用char*接受

const char* ch;
string s="123456";
ch = s.c_str();    
cout<<ch<<endl;

const char* ch2;
ch2 = s.data();
cout<<ch2<<endl;
  • *string转char[]、char **

用strcpy,转char* 需要先转char[],再转char*

string s="123456";
char ch[10];
//转char[]
strcpy(ch,s.c_str());
cout<<ch<<endl;

//转char*
char* ch2;
ch2 = ch;
cout<<ch2<<endl;
  • char[]、char*转string

直接赋值

// char[]转string 
char ch[] = "123456";
string s;
s = ch;
cout<<s<<endl;

// char*转string 
char* ch2 = ch;
string s2 = ch2;
cout<<s2<<endl;
如有错误,请指正,若侵权,请联系删除。
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值