#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int main()
{
//1 char * 转换成 const char *
char * tmp = "candle";
const char * p1 = tmp;
cout << "p1 is " << *p1 << endl;
// 2 const char * 转换成char * (利用const_cast<char> 去常转换)
const char * tmp1 = "fire";
char * p2 = const_cast<char*>(tmp1);
cout << "p2 is " << *p2 << endl;
// 3 string 转换成 const char*
string s = "sss";
const char * p3 = s.c_str();
cout << "p3 is " << *p3 << endl;
//4 char *转换成 string
char *p4 = "444";
string s1 = p4;
cout<<"s1 is "<<s<<endl;
//5 char[] 转换成string
char ch[] = { 'a' , 'b' , 'c' , 'd' ,'\0' };
string s2 = ch;
//如果数组中不加‘\0’,可以通过取下标赋值的方式
char ch2[5] = {'a' , 'c' , 'd' , 'e'};
cout << "ch is " << ch << endl;
cout << "s2 is " << s2 << endl;
// 6 string转换成char[]
string s3 = "iams3";
char ch1[sizeof(s3) + 1];
strcpy_s(ch1, s3.length() + 1, const_cast<char*>(s3.c_str()));
cout<<"ch1 is" << ch1 << endl;
//7 string转换成char*
//string可以根据下标访问。所以不能将string直接赋值给char*
string s4 = "iams4";
char * ch3 = const_cast<char *>(s4.c_str());
printf("ch3 is %s", ch3);
system("pause");
return 0;
}
运行结果: