您的位置:首页 > 编程语言 > C语言/C++

C++中const char*, string 与char*的转化

2016-10-11 21:08 393 查看
1:string转化成const char*

可以通过调用string类中的c_str函数实现string向const char*的转换

//string与const char*转换
string s = "string_To_const char* ";
const char *c_s=s.c_str();
const char *c_ss = s.data();




还可以直接使用string类中的data()函数,直接对const char *赋值

但是c_s并不是不变的,如果在之后改变了s的内容,c_s仍然会随着改变,这样就会造成不可弥补的错误!所以需要重新定义变量开内存管理c_s指针;

2:const char*转换成string
利用string的一个构造函数对string类的对象赋值即可

//const char*转换string
const char* p = "const char* _To_string";
string y(p);


3:string与char*的转换

string不能直接转换为char*,需要通过其他的方法来实现,现在简单介绍几种方法:

1:通过函数strcpy来实现;

//string与char*的转换
string ppp = "stringTochar*";
char* c;
const int len = ppp.length();
c=new char[len+1];
strcpy(c,ppp.c_str());
这里需要注意:1):给char* c分配内存空间时需要length()+1,因为字符指针c最后有一个‘\0’结尾;2):使用strcpy函数时系统会报错,在项目属性->C\C++预处理器->预处理器定义里面加入_CRT_SECURE_NO_WARNINGS;

2:通过copy函数实现:
string ppp = "stringTochar*";
char *d;
d=new char[len+1];
*(d+len)='\0';
ppp.copy(d,len,0);
这里一定要加上第四句语句因为char* 最后有一个'\0',如果不进行赋值的话结果就会出现乱码;

4:char*转化成string
直接赋值即可:
//char*与string的转换
char* pp = "stringTochar*";
string q(pp);


5:const char*转化成char*
使用strcpy函数即可
//const char*转化成char*
const char* csc = "constchar*Tochar*";
char* cc;
int length = strlen(csc);
cc = new char[length+1];
strcpy(cc,csc);
cout<<cc<<"   "<<csc<<endl;
下面给出代码和结果:
// string.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<string>

#pragma warning(disable:4996)
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//string与const char*转换
string s = "string_To_constchar*";
const char *c_s=s.c_str();
const char *c_ss = s.data();cout<<s<<" "<<c_s<<" "<<c_ss<<endl;

//const char*转换string
const char* p = "constchar*_To_string";
string y(p);
cout<<p<<" "<<y<<endl;

//char*与string的转换 char* pp = "stringTochar*"; string q(pp);
cout<<pp<<" "<<q<<endl;

//string与char*的转换 string ppp = "stringTochar*"; char* c; const int len = ppp.length(); c=new char[len+1]; strcpy(c,ppp.c_str());

char *d;
d=new char[len+1];
*(d+len)='\0';
ppp.copy(d,len,0);
cout<<ppp<<" "<<c<<" "<<d<<endl;

//const char*转化成char* const char* csc = "constchar*Tochar*"; char* cc; int length = strlen(csc); cc = new char[length+1]; strcpy(cc,csc); cout<<cc<<" "<<csc<<endl;

cin.get();
cin.get();
return 0;
}
运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: