- 论坛徽章:
- 0
|
这样把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类型的类型转换。如果你觉得的需要这样的转换了,首先应该检查你的程序中是否存在着上述缺陷。 |
|