C++中如何把一个字符串分割并放进一个数组(不限字符数,包括空格)

另外,为什么stringa;char*p=a;查看答案这样不合理?为什么把a的地址赋给指针p不行?a的地址也是string所以不行吗?... 另外,为什么
string a;

char *p=a;查看答案
这样不合理?为什么把a的地址赋给指针p不行?a的地址也是string所以不行吗?
展开
 我来答
红酒难喝
2013-12-05 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:121万
展开全部
#include <string>

#include <string.h>
这两条预处理指令分别引入的是string类和C语言的对字符数组的函数方法,所以是不能混用的。char* p是一个字符指针等同于一个字符数组,而string是一个类,一种自定义类型,所以直接这么赋值是不正确的。
而你说的const char *类型的值不能用来初始化char *类型的实体,const char* 是指向的空间内容不可变,而指针的地址可变,如果你用它来初始化一个char指针,假设允许的话,两个指针就指向的空间是同一个,而前者要求这个空间的内容不可变,后者允许这个空间可变,显然就会出现冲突,所以是不行的
HarryNR
2013-12-05 · TA获得超过929个赞
知道小有建树答主
回答量:1013
采纳率:33%
帮助的人:794万
展开全部
string a的话,没有'\0'结束标记;
要使用C风格的字符串,正确的转换方法是:
char* p = a.c_str();
追问
const char *类型的值不能用来初始化char *类型的实体
追答
如果你不需要改变那个字符串的内容,就定义成 const char*吧。。。
想得到char*类型的话,就只能显示的类型转化了.
char* p = (char*)a.c_str();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式