求大神,这代码为什么会出现汉字...//转为大写String::Strupc(char *s){ data=new char [strlen(s)+1]; for(int i=0;i=97 && s[i]

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 03:44:24

求大神,这代码为什么会出现汉字...//转为大写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]

求大神,这代码为什么会出现汉字...//转为大写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 ,而这段内存空间存的是什么是未知的,故输出了乱码,那个汉字其实是两个随机字节拼起来正好凑成了个妄而已.