免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 43289 | 回复: 24
打印 上一主题 下一主题

这样把string转换到char*呢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-07 10:08 |只看该作者 |倒序浏览
我用呢C_STR().但编译器说不能把const char* 转换到char*啊

论坛徽章:
0
2 [报告]
发表于 2004-04-07 10:31 |只看该作者

这样把string转换到char*呢

http://bbs.chinaunix.net/forum/viewtopic.php?t=288234&highlight=wangrujun

论坛徽章:
0
3 [报告]
发表于 2004-04-07 10:33 |只看该作者

这样把string转换到char*呢

直接赋值就可以了吧!!

string实际上就是一个char []

string str1="your str";
char * ch=str1;

ps:有没有string类型呀,我在c下总是报错!郁闷

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-04-07 10:49 |只看该作者

这样把string转换到char*呢

C下面没有string类型。字符串就是字符数组嘛,自己处理好了。没有单独的string类型。

论坛徽章:
0
5 [报告]
发表于 2004-04-08 15:31 |只看该作者

这样把string转换到char*呢

“编译器说不能把const char* 转换到char*”。

错误原因在于const,而不在于string或者char*。

看看Thinking In C++,第八章讲得很清楚。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2004-04-08 15:38 |只看该作者

这样把string转换到char*呢

用 strcpy

char cstr1[80];
string str2;

......

strcpy( cstr1, str2.c_str() );

这样子就可以了。

论坛徽章:
0
7 [报告]
发表于 2004-04-09 13:44 |只看该作者

这样把string转换到char*呢

试一下
string tstr;
char *tch
tch = (char *)tstr.c_str();

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2004-04-09 14:14 |只看该作者

这样把string转换到char*呢

原帖由 "netAnts_1979" 发表:
试一下
string tstr;
char *tch
tch = (char *)tstr.c_str();

呵呵,你这样做就麻烦大喽!

论坛徽章:
0
9 [报告]
发表于 2004-04-09 16:05 |只看该作者

这样把string转换到char*呢

[quote]原帖由 "hugoyg"]我用呢C_STR().但编译器说不能把const char* 转换到char*啊[/quote 发表:

这恰恰说明你的程序中还存在着设计缺陷,或者在你的使用上有问题。

例如,我们常用的字符串拷贝函数 strcpy 它的原型定义为 char *strcpy(char *dest, const char *src)。参数 src 前有 const 修饰符,表明函数调用前后中不会对 src 指向的字符串作任何改动。而 string 的成员函数 c_str() 返回的就是一个 const char* 型的字符串,所以你可以这样调用:strcpy( dest, astring.c_str() )。编译器会阻止你这样的调用:strcpy( astring.c_str(), src ),显然,这样的使用是有问题的。

如果你自己定义的函数没有加适当的 const 限定,比如把上述函数定义为:char *strcpy(char *dest, char *src),则不能再象上面所示的  strcpy( dest, astring.c_str() )那样调用函数了,因为 const char* 类型和 char* 类型不一致。但是这样的函数调用却是我们经常需要的。究其原因,是由于在函数的设计上存在缺陷,没有加适当的限定所致。

一般来说,没有必要进行 const 类型到非const类型的类型转换。如果你觉得的需要这样的转换了,首先应该检查你的程序中是否存在着上述缺陷。

论坛徽章:
0
10 [报告]
发表于 2004-04-09 21:57 |只看该作者

这样把string转换到char*呢

这说明在这个类中,他的这个内部的成员可能是定义成const char *类型的,因此要对其进行强制转换,如果内部是const char *,希望复制给一个char *的变量就要这样转化。(char *)astring.c_str();
如果类的内部定义成char *,要对外部的一个const char *复制是,就可以这样进行转换 (const char *)astring.c_str();
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP