今天有个同事问了我一个关于string转char*的问题,最近都在做Qt方面的开发,C++自带类的用法一时半会也记不起来,就百度了一下(像这些很常见的问题,百度要比google的搜索结果更人性化一些,当然如果要搜索特别专业的知识还是google吧!)。大部分都是以下三种方法。
我就不自己写代码了,直接拷贝别人的代码:
1.data
如:
string str="abc";
char *p=str.data();
2.c_str
如:string str="gdfd";
char *p=str.c_str();
3. copy
比如
string str="hello";
char p[40];
str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
*(p+5)='\0'; //要手动加上结束符
cout < <p;
第三种方法可以做到,但是貌似有些复杂了,前两种方法很简练,但是有些问题,报的错误都是error C2440: “=”: 无法从“const char *”转换为“char *”,这种错误很好办,强制转换就OK,有两种方法:
string ss = "sss";
char *chr;
chr = (char*)(ss.c_str());//直接强制转换
chr = const_cast<char*>(ss.c_str());//使用运算符转换
第一种强制转换的方法貌似有些不科学,毕竟任何强制转换都是不科学的,第二种方法毕竟科学。
OK,解决了!