C++基础积累(3)string和char*、int的互转方法

来源:互联网 发布:matlab迭代求解算法GS 编辑:程序博客网 时间:2024/05/22 07:42
最常见类型互转~
 
1、char* 转string 
 char* cp="char"; string sp=cp; cout<<sp<<endl;
2、string转char* 有三种方法
 ①.data
string sgp="string";const char* crp=sgp.data();cout<<crp<<endl;
②.c_str
string str="gdfd"; char *p=str.c_str(); 
③copy
string str="hello"; char p[40]; str.copy(p,4,1); //这里5,代表复制几个字符,0代表复制的开始位置index*(p+4)='\0'; //要手动加上结束符cout <<p<<endl;
3、int转string
int intp=32;char temp[64];sprintf(temp,"intp=%d,intp=%d",intp,4);string s=temp;cout<<s<<endl;
4、string转int
std::string text = "152"; int number = std::atoi( text.c_str() ); //如果转换失败,有两种可能:①:number可能由于过大或过小而不能完全存储 ,//②不能转换成一个数字cout<<"number="<<number<<endl;

好了,讲了这些类型的转换,其他自己变通吧~  如果知道根据方便的转换方式请记得和我分享一下噢~
 
补充:java中字符串用“+”号连接的问题
AnsiString str;
AnsiString s = "a";
str = s + "b";    //正常
str = AnsiString("a") + "b" ; //正常
str = "a" + "b";  //异常 为什么?
第1个和第2个正确,是因为支持一个AnsiString和一个未定义类型的字符串例如"b"相加,并且在执行这种相加时,编译器应该是将"b"强制转化为了AnsiString。
str = "a" + "b";  //异常 为什么?
在vc中用string str="a"+"b";报的错很明显“cannot add two pointers”
你现在的"a"与"b"仅仅是C风格的字符串,并不是BCB里的AnsiString或者VC里的CString或者C++里的string,C++并不支持两个这样的字符串相加。
string、CString、AnsiString之所以能够相加,是因为它们都是类,它们的类定义了例如AnsiString operator+( const char* a, const char* b)这样的操作。
原创粉丝点击