关于string转char*的问题

来源:互联网 发布:人体解剖软件中文版 编辑:程序博客网 时间:2024/06/12 01:17

今天有个同事问了我一个关于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,解决了!