在c++中,怎样把string转化为相同内容的char*?

是把string转化为char*,不是constchar*。我所知道的.data()以及.c_str()都是把string转化为constchar*的……不知道有没办法转... 是把string转化为char*,不是const char*。
我所知道的.data()以及.c_str()都是把string转化为const char*的……
不知道有没办法转换为非const的普通char*?
展开
 我来答
fastwater
2009-10-08 · TA获得超过263个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:106万
展开全部
(char *)的强制类型转换不就行吗?恩,有的编译器可以直接这样吧。不过直接这样的话,你更改转换后char*的内容会影响到原来的string变量。
——————比较安全的方法是:
你建立一个char *d,为它分配空间。然后把const char *s,复制过来。
自己写个复制 int i=0;while(d[i]=s[i++]);
或者用 strcpy
qizhi0119
2009-10-08 · TA获得超过357个赞
知道小有建树答主
回答量:510
采纳率:0%
帮助的人:240万
展开全部
//写了个示例给你.是这样的意思不?
#include <stdio.h>
#include <string>
void test(char *p);
int main()
{
std::string str = "abc";
test((char *)str.c_str());
return 0;
}
void test(char *p)
{
printf("p:%s\n",p);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海韡天明
2009-10-08
知道答主
回答量:21
采纳率:0%
帮助的人:28.9万
展开全部
如果想把const char *转为char*,可以使用const_cast转换,例如:
const char* str = "Hello";
char* strTmp = const_cast<char*>(str);
----------------------------------------------------
试了下,这样做不行。strTmp[2] = 'x';会导致运行时错误!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bloodelf02
2009-10-08 · TA获得超过1657个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:493万
展开全部
字符串的const char*虽然可以通过 const_cast和 c 式强转变为 char*,但这么做是不安全的,你转换成char*而不要const char*无非是要改变指向的值,c++标准已经说了,对字符串来说,这么做是未定义的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式