64,648
社区成员
发帖
与我相关
我的任务
分享
/*自己的输出流MyOutstream怎么进行数据格式的控制呢?
想实现指定输出数据的格式,包括输出数据宽度、(二、八、十、十六)进制、浮点数的精度。
跟<iomanip>头文件中的setw(int n),setbase(int base);setprecision(int prec);函数的功能一样的!
大家帮忙看看吧!小弟学习一下!*/
#include <stdio.h>
#include <stdlib.h>
class MyOutstream
{
public:
const MyOutstream& operator<<(int value)const;//对整型变量的重载
const MyOutstream& operator<<(char*str)const;//对字符串型的重载
};
const MyOutstream& MyOutstream::operator<<(int value)const
{
printf("%d",value);
return*this;//注意这个返回……
}
const MyOutstream& MyOutstream::operator<<(char*str)const
{
printf("%s",str);
return*this;//同样,这里也留意一下……
}
MyOutstream myout;//随时随地服务的全局对象myout
int main()
{
int a=2003;
char*myStr="Hello,World!";
myout<<a<<"\n";
myout<<myStr;
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
class setbase;
class MyOutstream
{
public:
MyOutstream() : base(10) {}
const MyOutstream& operator<<(int value)const;//对整型变量的重载
const MyOutstream& operator<<(char*str)const;//对字符串型的重载
const MyOutstream& operator<<(setbase& s);
int base;
};
class setbase
{
public :
setbase(int base) : _base(base)
{
}
void fun(MyOutstream& stream) { stream.base = _base; };
int _base;
};
const MyOutstream& MyOutstream::operator <<(setbase& s)
{
s.fun(*this);
return *this;
}
const MyOutstream& MyOutstream::operator<<(int value)const
{
char str[32];
printf("%s",itoa(value, str, base));
return*this;//注意这个返回……
}
const MyOutstream& MyOutstream::operator<<(char*str)const
{
printf("%s",str);
return*this;//同样,这里也留意一下……
}
MyOutstream myout;//随时随地服务的全局对象myout
int main()
{
int a=2003;
char*myStr="Hello,World!";
myout<<a<<"\n";
myout<<setbase(2)<<a<<"\n";
myout<<setbase(8)<<a<<"\n";
myout<<myStr;
system("pause");
return 0;
}