注册 登录
编程论坛 C++教室

[求助]运算符重载问题

xbw0114 发布于 2007-10-07 20:17, 526 次点击

#include <iostream.h>

#include <string.h>

class Stat{

char str[101];

int n[10];

public:

Stat( char *str="" ){ strcpy(this->str, str); } //这里是什么意思?

void input();

void process();

friend ostream& operator<<(ostream&, Stat&);

};

void Stat::input()

{

cout << "input a string: ";

cin.getline( str, 100 );

}

void Stat::process()

{

unsigned int i;

for(i=0; i<10; i++) n[i] = 0;

for(i=0; i<strlen(str); i++)

if( (str[i]>='0' ) && (str[i]<='9') )

n[str[i]-'0']++ ;//这里是什么意思?
}

ostream& operator<<(ostream& ostr, Stat& st)

{

ostr << "串为:" << st.str << endl;

for( int i=0; i<10; i++)

ostr << "字符" << char('0'+i) << "的个数:" << st.n[i] << endl;

return ostr;

}

void main()

{

Stat st;
st.input();
st.process();

cout << st << endl;

帮忙读下程序,详细帮忙解释下该程序啊,谢过
}

4 回复
#2
DieHeart2007-10-07 23:56

Stat( char *str="" ){ strcpy(this->str, str); } //这里是什么意思?
a function with default parameter ""
copy patameter to member variable


n[str[i]-'0']++ ;//it's easy to do it yourself.

#3
xbw01142007-10-08 08:37

什么意思?

#4
远去的列车2007-10-08 09:21

题目跟问题毫不相关啊

str[i]-'0'
str[i]这个字符跟'0'的偏移量

#5
zkkpkk2007-10-08 17:28
n[str[i]-'0']++ ;//这里是什么意思?
计算str[i]那个数字字符的次数,你前面给n[]初始化0~9的单元里都是0了是吧,所以找到那个位置后自增OK,位置怎么来的呢,str[i]-'0'等于(int)str[i]-'0',所以定位到了n[]里和str[i]的数字字符一致的那个单元去了。

Stat( char *str="" ){ strcpy(this->str, str); } //这里是什么意思?
自己查strcpy的功能,这里是在构造函数里把成员str初始化
1