如何std:string中存放含有'\0'字符串

 我来答
cx0627year
推荐于2018-03-28 · TA获得超过721个赞
知道小有建树答主
回答量:477
采纳率:72%
帮助的人:311万
展开全部
'\0'是字符串结束的标志,是系统默认添加在字符串的末尾,作为字符串结束的标志。
特别的,空串就是一个'\0'。
如果是string型,程序员添加不了(系统包装了),如果是char型,程序员可以将一位设为0,意思是'\0',例如:
char s[55];
s[0]='A';
s[1]=0;
(s为一个长度为一的字符串,内容为一个字符A)
匿名用户
推荐于2016-02-28
展开全部
char *string="hell oworld!";//这个是字符串常量, 存在文字常量区, 地址受保护,不可以被修改.

另外字符串是以'\0'结尾的, 不能用string!=NULL这个判断字符串是否结束,你这个string是个地址, NULL是个值为0的地址, 应该通过判断字符串结尾的字符来确定字符串有没有结束.

改成如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char string[]="hell oworld!";
char *p=string;
while(*p != '\0')
{
if(*p==' ')
{
while(*p != '\0')
{
*p=*(p+1);
p++;
}
}
else p++;
}

printf("%s\n",string);
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黔含品2
2017-01-11 · TA获得超过3.8万个赞
知道小有建树答主
回答量:2.7万
采纳率:45%
帮助的人:1415万
展开全部
s自身的内存 在结束后 会直接释放

问题是strdup开辟内存 这样做是没法释放的。
C++和C尽量不要混用。

其实 用string s=是没必要用strdup的
比如 存在char a[]="test"
要生成新的 直接string s=a;
这样就可以了。

strdup是C的
需要
char *p=strdup(a);
使用后, 需要 free(p);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
掌铌子7t
2016-01-11 · 超过25用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:23.4万
展开全部
c++已经做了相应维护,不用操心
转为C
直接string.c_str()即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式