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

最常见类型互转~
 
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)这样的操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值