 2007-06-22 21:56
	    2007-06-22 21:56
   2007-06-22 21:58
	    2007-06-22 21:58
  哦,原来如此,
 谢谢,洗了澡我去修改看看,
谢谢,洗了澡我去修改看看,
 2007-06-22 22:02
	    2007-06-22 22:02
   2007-06-22 22:06
	    2007-06-22 22:06
   2007-06-22 22:23
	    2007-06-22 22:23
   2007-06-23 14:35
	    2007-06-23 14:35
  今天看了看昨天的这个题,发现了一相很大的错,今天改了改,但是还是不行,程序如下:
//============================================================================//
//===========程序功能:自己定义一个string类,并用它建立对象===================//
//===程序问题:将字符反顺序排序后,显示出的是知码,就算字符全部是字母也不行===//
//============================================================================//
#include "iostream.h"
#include "stdio.h"
//============================================================================//
//----------自定义字串类------------------------------------------------------//
class string
{
/******************************************************************************/
/**************私有数据********************************************************/
    int length;
    char *contents;
    int who;
    char *fan;
    
/******************************************************************************/
/**************公有数据********************************************************/
public:
/***构造函数***********************/
    string(int id);
    
/***析构函数***********************/
    ~string();
    
/***用户界面************************/
    int get_length(){return length;};         //返回字符串的长度
    char *get_contents() {return contents;};  //返回字符串的内容的指针
    char *get_fan()
        {
            char temp[length];
            int j=0;
            for(j=0; j<((length-1)/2);j++)
            {
                char t;
                t=temp[j];
                temp[j]=temp[length-j-2];
                temp[length-j-2]=t;
            }
           fan=temp;
           return fan;
        };          //返回字符串的返排列的字符串的指针
    int set_contents(int in_length,char *in_contents);  //字符内容设置(从终端或其它地方接收参数)
    int set_contents(char *in_contents);                //字符内容设置(从终端或其它地方接收参数)
};
/***类函数(对数据进行操作)*******************/
string:: string(int id)
{
    length=0;
    contents=NULL;
    fan=NULL;
    who=id;
    printf("字串对象%d已经初始化!\n\a",who);
};
string:: ~string()
{
    printf("字串对象%d已经释放!\n\a",who);
};
int string::set_contents(int in_length,char *in_contents)
{
    in_contents[in_length]='\0';
    contents=in_contents;
    fan=in_contents;
    length=in_length;
    return 1;
};
int string:: set_contents(char *in_contents)
{
    contents=in_contents;
    fan=in_contents;
    int i=0;
    char *p=in_contents;
    while(*p++!='\n')i++;
    length=i;
    
    
/******我想加个将输入的字符串按相反顺序排列,可排出来是乱码!*****************/
/*  int j=0;
    char temp[length];
    for(j=0; j<((length-1)/2);j++)
    {
       char t;
        t=temp[0];
        temp[0]=temp[length-1];
        temp[length]=t;
    }
   fan=temp;               */
   return 1;
};
//----------------------------------------------------------------------------//
//============================================================================//
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((//
//))主函数))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))//
main()
{
    int i;
    char *p;
    string x(1),y(2);
    x.set_contents("abc"); //大家好,这是自己编的类写出来的字串\n\n\a
    y.set_contents("abc");     //大家好,这是自己编的类写出来的字串\n\n\a
    i=x.get_length();
    p=x.get_contents();
    cout<<"x_length="<<i<<"    x_contents="<<p<<"\n\a";
    i=y.get_length();
    p=y.get_contents();
    cout<<"y_length="<<i<<"    y_contents="<<p<<"\n\a";
    p=x.get_fan();
    cout<<"x.fan="<<p<<"\n";
    p=y.get_fan();
    cout<<"y.fan="<<p<<"\n";
    getchar();
}
//((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((//
//))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))//
 2007-06-23 14:44
	    2007-06-23 14:44
  int string:: set_contents(char *in_contents)
{
    contents=in_contents;
    fan=in_contents;
    int i=0;
    char *p=in_contents;
    while(*p++!='\n')i++;
    length=i;
    
    
/******我想加个将输入的字符串按相反顺序排列,可排出来是乱码!*****************/
/*  int j=0;
    char temp[length];
    for(j=0; j<((length-1)/2);j++)
    {
       char t;
        t=temp[0];
        temp[0]=temp[length-1];
        temp[length]=t;
    }
   fan=temp;               */
   return 1;
};
 char temp[length]; 是不行的
 估计下标要要求用立即数.

 2007-06-23 14:51
	    2007-06-23 14:51
   2007-06-24 10:42
	    2007-06-24 10:42
  怎么静态数组的维数用变量指定呢 ?  写个大概的...参考下吧 
 程序代码:
程序代码:
#include<string.h>
#include<iostream.h>class string;
ostream & operator<<(ostream &output, string &s);
istream & operator>>(istream &input, string &s);class string
{public:
string(char *m = \"\");
char* reverseStr();
friend ostream & operator<<(ostream &output, string &s);
friend istream & operator>>(istream &input, string &s);
~string();
private:
char *str;};
string::string(char *m)
{
str = new char[strlen(m)+1];
strcpy(str, m);
}string::~string() {delete []str;}
char* string::reverseStr()
{
char *p1, *p2, ch;
p1 = p2 = str;
while(*p2 != '\0')
p2++;
p2--;
while(p1 < p2)
{
ch=*p2;*p2=*p1;*p1=ch;
p1++;p2--;
}
return str;
}ostream & operator<<(ostream &output, string &s)
{
output<<s.str;
return output;
}istream & operator>>(istream &input, string &s)
{
char temp[1000];
input>>temp;
delete []s.str;
s.str=new char[strlen(temp)+1];
strcpy(s.str,temp);
return input;
}
int main()
{
string s;
cout<<\"input :\"<<endl;
cin>>s;
cout<<\"output :\"<<endl;
cout<<s;
cout<<\"\nafter reversed: \"<<s.reverseStr()<<endl;return 0;
}

 2007-06-24 19:39
	    2007-06-24 19:39