C++中const char*, string 与char*的转化
2016-10-11 21:08
393 查看
1:string转化成const char*
可以通过调用string类中的c_str函数实现string向const char*的转换
还可以直接使用string类中的data()函数,直接对const char *赋值
但是c_s并不是不变的,如果在之后改变了s的内容,c_s仍然会随着改变,这样就会造成不可弥补的错误!所以需要重新定义变量开内存管理c_s指针;
2:const char*转换成string
利用string的一个构造函数对string类的对象赋值即可
3:string与char*的转换
string不能直接转换为char*,需要通过其他的方法来实现,现在简单介绍几种方法:
1:通过函数strcpy来实现;
2:通过copy函数实现:
4:char*转化成string
直接赋值即可:
5:const char*转化成char*
使用strcpy函数即可
可以通过调用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;
}
相关文章推荐
- 从char* 或者const char*或者string转化成LPWSTR
- 实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
- 实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- string、char*、const char*、char [] 之间的相互转化
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等----留着备用
- 【C++】char*,const char*,string的相互转换
- C/C++中的char*,const char*,string之间转换
- (c++) int 转 string,char*,const char*和string的相互转换
- 实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date
- c++中string、const char*和char*之间的相互转换
- (c++) int 转 string,char*,const char*和string的相互转换
- [C++杂记] char*\const char*\string相互转化
- 从char* 或者const char*或者string转化成LPWSTR
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等 .
- [ZZ] C++ char*,const char*,string的相互转换
- C++ CHAR数组转化为STRING
- char*,const char*和string的相互转换[转]