C++中如何把一个字符串分割并放进一个数组(不限字符数,包括空格)
另外,为什么stringa;char*p=a;查看答案这样不合理?为什么把a的地址赋给指针p不行?a的地址也是string所以不行吗?...
另外,为什么
string a;
char *p=a;查看答案
这样不合理?为什么把a的地址赋给指针p不行?a的地址也是string所以不行吗? 展开
string a;
char *p=a;查看答案
这样不合理?为什么把a的地址赋给指针p不行?a的地址也是string所以不行吗? 展开
展开全部
#include <string>
#include <string.h>
这两条预处理指令分别引入的是string类和C语言的对字符数组的函数方法,所以是不能混用的。char* p是一个字符指针等同于一个字符数组,而string是一个类,一种自定义类型,所以直接这么赋值是不正确的。
而你说的const char *类型的值不能用来初始化char *类型的实体,const char* 是指向的空间内容不可变,而指针的地址可变,如果你用它来初始化一个char指针,假设允许的话,两个指针就指向的空间是同一个,而前者要求这个空间的内容不可变,后者允许这个空间可变,显然就会出现冲突,所以是不行的
#include <string.h>
这两条预处理指令分别引入的是string类和C语言的对字符数组的函数方法,所以是不能混用的。char* p是一个字符指针等同于一个字符数组,而string是一个类,一种自定义类型,所以直接这么赋值是不正确的。
而你说的const char *类型的值不能用来初始化char *类型的实体,const char* 是指向的空间内容不可变,而指针的地址可变,如果你用它来初始化一个char指针,假设允许的话,两个指针就指向的空间是同一个,而前者要求这个空间的内容不可变,后者允许这个空间可变,显然就会出现冲突,所以是不行的
展开全部
string a的话,没有'\0'结束标记;
要使用C风格的字符串,正确的转换方法是:
char* p = a.c_str();
要使用C风格的字符串,正确的转换方法是:
char* p = a.c_str();
追问
const char *类型的值不能用来初始化char *类型的实体
追答
如果你不需要改变那个字符串的内容,就定义成 const char*吧。。。
想得到char*类型的话,就只能显示的类型转化了.
char* p = (char*)a.c_str();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询