c++String 类问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:43:37
源代码如下:
#include<iostream.h>

class String
{
public:
char *ch;
int length;
};

String Copy(char *chars)//复制字符串chars到刚一个类T的ch成员中,ch在复制之前进行空间申请;
{
String T;
int i;
char *c = chars;

for(i=0;chars;++i,++chars); //求chars的长度;

T.ch = new char[i];

for(i = 0;c;c++,i++) //进行复制;
{
T.ch[i] = c[i];
}

T.ch[i] = '\0';

T.length = i-1;

return T;
}

void ShowString(String&tt) //打印String类中的字符串数据;
{
for(int i=0;i<=tt.length;i++)
{
cout<<tt.ch[i];
}
cout<<endl;
cout<<"Length:"<<tt.length<<endl;

}

void main()
{
// cout<<"fdfas";
char* cc = "HAHA";
String TT;
TT = Copy(cc);
ShowString(TT);
}

无聊的时候玩String类出

String Copy(char *chars)//复制字符串chars到刚一个类T的ch成员中,ch在复制之前进行空间申请;
{
String T;
int i;
char *c = chars;

for(i=0;chars;++i,++chars); //求chars的长度;这里进入了死循环

T.ch = new char[i];

for(i = 0;c;c++,i++) //进行复制;
{
T.ch[i] = c[i];
}

T.ch[i] = '\0';

T.length = i-1;

return T;
}

for(i=0;chars;++i,++chars); //求chars的长度;
这就有问题, 后面还没看

至于第一行为什么打印不出来, 因为你没 << endl; 或者 flush, 它就会等缓冲到一定程度再打印。 而你的程序在到这个程度之前已经没戏了