char*,const char*,char[],string之间的转换问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013832676/article/details/46846381
#include <iostream>
#include <stdlib.h>
#include <string>


using namespace std;
int main()
{
// string和const char*互转
const char* a;
string str_1 = "my name is pang";
a = str_1.c_str();
cout<<a<<endl;


//const char*转string
const char* a_1 = "hello string";
string str_2(a_1);
cout<<str_2<<endl;


//string 转char*
string str_3 = "String to char*";
char* a_2;
int lenOfStr = str_3.length();
a_2 = new char[lenOfStr];
strcpy(a_2,str_3.c_str());
cout<<a_2<<endl;


//string转char* 方法2
string str_31 = "String to char* function 2";
char* a_31;
a_31 = const_cast<char*>(str_31.c_str());
cout<<"the function of String to Char* "<< a_31<<endl;


//char* 转string
string str_4;
char* a_3 = "char * to String";
str_4 = a_3;
cout<<str_4<<endl;


//const char*转char*
const char* a_5 = "const char* to char*";
char* a_6 = new char[100];
strcpy(a_6,a_5);
cout<<a_6<<endl;
//delete a_6;


//strcpy()作用是将a_5的内容复制到a_6,但是当句子中遇到\0终止符的时候就截止copy了,如下所示:
const char* a_7 = "const char* \0 to char*";
char* a_8 = new char[100];
strcpy(a_8,a_7);
cout<<a_8<<endl;//输出a_8就是只复制到了const char*

//使用const_cast也可以实现
const char* a_71 = "const char* to char*";
string str_71(a_71);
a_8 = const_cast<char*>(str_71.c_str());
cout<<a_8<<endl;


//char* 转到const char*
char* a_9 = "a_9 char* to const char*";
const char* a_10 = a_9;
cout<<a_10<<endl;


//char[] 转string
char a_11[10]= "123456";
string str_11 = a_11;
cout<<str_11<<endl;


//string to char[]
string str_12 = "123321";
char a_12[12];
strcpy(a_12,str_12.c_str());
cout<<a_12<<endl;


//char*转char[]
char* a_13 = "\n\n\nchar* to char[]";
char arr_1[100];

cout<< &a_13<<endl;
cout<< (a_13[0])<<endl;
cout<< &a_13<<endl;

//cout<< &arr_1<<endl;
////&arr_1 = *a_13;
//strcpy(arr_1,a_13);
//cout<<arr_1<<endl;
//顺带介绍一下字符指针的概念,在创建字符指针的时候,内存开辟了两个空间,一个空间用来存放char* to char[]这句话,另一个用来存放char*类型的a_14, 这个a_14\
是一个字符指针,有自己的内存位置,其站一个内存地址,自身的值则是后面那句话的首地址。
char* a_14 = "char* to char[]";

printf("%x\n",&a_14);
printf("%x\n",&a_14[0]);
printf("%x\n",a_14);
}

猜你喜欢

转载自blog.csdn.net/u013832676/article/details/46846381