600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C++中const char* string 与char*的转化

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

时间:2024-05-26 00:50:47

相关推荐

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

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

原文:/zhang_alongzd/article/details/52790905

版权声明:本文为博主原创文章,未经博主允许。 /zhang_alongzd/article/details/52790905

1:string转化成const char*

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

[cpp]view plaincopy//string与constchar*转换strings="string_To_constchar*";constchar*c_s=s.c_str();[cpp]view plaincopyconstchar*c_ss=s.data();

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

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

2:const char*转换成string

利用string的一个构造函数对string类的对象赋值即可

[cpp]view plaincopy//constchar*转换stringconstchar*p="constchar*_To_string";stringy(p);

3:string与char*的转换

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

1:通过函数strcpy来实现;

[cpp]view plaincopy//string与char*的转换stringppp="stringTochar*";char*c;constintlen=ppp.length();c=newchar[len+1];strcpy(c,ppp.c_str());这里需要注意:1):给char* c分配内存空间时需要length()+1,因为字符指针c最后有一个‘\0’结尾;2):使用strcpy函数时系统会报错,在项目属性->C\C++预处理器->预处理器定义里面加入_CRT_SECURE_NO_WARNINGS;2:通过copy函数实现:[cpp]view plaincopystringppp="stringTochar*";char*d;d=newchar[len+1];*(d+len)='\0';ppp.copy(d,len,0);这里一定要加上第四句语句因为char* 最后有一个'\0',如果不进行赋值的话结果就会出现乱码;

4:char*转化成string直接赋值即可:[cpp]view plaincopy//char*与string的转换char*pp="stringTochar*";stringq(pp);

5:const char*转化成char*使用strcpy函数即可[cpp]view plaincopy//constchar*转化成char*constchar*csc="constchar*Tochar*";char*cc;intlength=strlen(csc);cc=newchar[length+1];strcpy(cc,csc);cout<<cc<<""<<csc<<endl;下面给出代码和结果:[cpp]view plaincopy//string.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<iostream>#include<string>#pragmawarning(disable:4996)usingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){//string与constchar*转换strings="string_To_constchar*";constchar*c_s=s.c_str();constchar*c_ss=s.data();cout<<s<<""<<c_s<<""<<c_ss<<endl;//constchar*转换stringconstchar*p="constchar*_To_string";stringy(p);cout<<p<<""<<y<<endl;//char*与string的转换char*pp="stringTochar*";stringq(pp);cout<<pp<<""<<q<<endl;//string与char*的转换stringppp="stringTochar*";char*c;constintlen=ppp.length();c=newchar[len+1];strcpy(c,ppp.c_str());char*d;d=newchar[len+1];*(d+len)='\0';ppp.copy(d,len,0);cout<<ppp<<""<<c<<""<<d<<endl;//constchar*转化成char*constchar*csc="constchar*Tochar*";char*cc;intlength=strlen(csc);cc=newchar[length+1];strcpy(cc,csc);cout<<cc<<""<<csc<<endl;cin.get();cin.get();return0;}运行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。