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;
如有错误,请指正,若侵权,请联系删除。