const char *p = "abcdef";
char *q = p;
这样的话会报错。
我用的一个for循环来,一个一个的把值复制过去的。
有没有什么更方便的办法?
同学们可能没理解我的意思,说具体一点:
string a("abcdef");
char *b = a.c_str(); 这里会报错,c_str()返回的是const char*,所以不能赋给char *的b,而某个函数要求使用 char*作为参数,我从自己设计的函数中返回的是 string 类型。
简单一句话:怎么样从string类型转换成char*类型,而不是const char*!
这是我的代码片断:
char result[converstr.length()];
const char *tmpre = converstr.c_str();
for(int j = 0; j < converstr.length(); j++)
{
result[j] = tmpre[j];
}
if((nwrite = writen(connectSfd, result, converstr.length())) < 0)
{
perror("Server write Error!");
exit(-1);
}
const char*为char*赋值,最近在写UNIX网络编程作业时遇到这个问题~~
答案:3 悬赏:40 手机版
解决时间 2021-02-03 15:29
- 提问者网友:杀生予夺
- 2021-02-03 00:12
最佳答案
- 五星知识达人网友:舊物识亽
- 2021-02-03 01:46
之所以叫const是不能改变的,你把变量q指向一个内容不可变的地址当然会报错,只能进行拷贝,可以用strcmp函数
char *c = (char*)malloc(sizeof(char) * (strlen(s) + 1));
strcmp(c, s);
char *c = (char*)malloc(sizeof(char) * (strlen(s) + 1));
strcmp(c, s);
全部回答
- 1楼网友:上分大魔王
- 2021-02-03 03:16
你好!
const char *p = "adbddf";
p = "dfers"; // 不报错
p[0] = '3'; // 报错
*p = '4'; // 报错
const char *p只是p指向的东西不可变,但是p的值可以变。
如果你不对q指向的东西进行改变,把q申明成const char *q就可以
希望对你有所帮助,望采纳。
- 2楼网友:走死在岁月里
- 2021-02-03 02:27
楼上的应该是用strcpy函数吧 strcmp是比较
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯