求大神,这代码为什么会出现汉字...
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/13 07:14:21
求大神,这代码为什么会出现汉字...
//转为大写
String::Strupc(char *s)
{
data=new char [strlen(s)+1];
for(int i=0;i=97 && s[i]
//转为大写
String::Strupc(char *s)
{
data=new char [strlen(s)+1];
for(int i=0;i=97 && s[i]
结尾没有手动置结束符 \0 ,在 cout 之前加一句
data[i]='\0';
cout在输出字符数组的时候,是以 \0 作为输出的结束条件的,你没有给末尾添加 \0 ,故 cout 把 h 后边的内存也看做 char 输出了,直到碰到个 \0 ,而这段内存空间存的是什么是未知的,故输出了乱码,那个汉字其实是两个随机字节拼起来正好凑成了个妄而已.
再问: 恩 昨天已经改了 ,就是你说的那样 谢谢啦
data[i]='\0';
cout在输出字符数组的时候,是以 \0 作为输出的结束条件的,你没有给末尾添加 \0 ,故 cout 把 h 后边的内存也看做 char 输出了,直到碰到个 \0 ,而这段内存空间存的是什么是未知的,故输出了乱码,那个汉字其实是两个随机字节拼起来正好凑成了个妄而已.
再问: 恩 昨天已经改了 ,就是你说的那样 谢谢啦