请教一个关于操作符重载的问题

amadou 2002-12-17 11:14:51
main()
{
int a[50];
cin >> a;
}

输入格式是这样的,N:d,d,d,d……,其中N为所要进入数组数据的个数,d为数据
比如要输入1,2,3三个数,这样的格式为3:1,2,3

请问>>要如何重载??
...全文
22 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ITMSC 2002-12-17
  • 打赏
  • 举报
回复
#include <iostream>

using namespace std;

istream & operator>>(istream& in, int*& a)
{
int b;
in >> b;
a = new int[b+1];
a[0] = b;
for( int i = 1; i <= a[0]; i++ )
in >> a[i];
return in;
}

int main()
{
int* a;
int* b;
cin >> a >> b;
int i;
for( i = 1; i <= a[0]; i++ )
cout << a[i] << " ";
cout << endl;
for( i = 1; i <= b[0]; i++ )
cout << b[i] << " ";
cout << endl;
delete[] a;
delete[] b;
}

input :
4 1 2 3 4
3 1 2 3
output:
1 2 3 4
1 2 3

俞庆平 2002-12-17
  • 打赏
  • 举报
回复
如果没有类的话,不用friend申明了。
jp311 2002-12-17
  • 打赏
  • 举报
回复
istream &operator>>(istream &is, int *a)
{
int N;
is >> N
for (int i = 0; i < N; --i)
{
is >> a[i];
}
return is;
}
俞庆平 2002-12-17
  • 打赏
  • 举报
回复
在你的类中声明:

friend istream& operator >>(istream& is, YourClassName& arg);
然后在外部实现
istream& operator >>(istream& is, YourClassName& arg)
{
is >> members;
....

return is;
}


Firstbyte 2002-12-17
  • 打赏
  • 举报
回复
istream & operator>>(int* a)
{
int b;
cin>>b;
for(;b>0;b--)
{
int x;
cin>>x;

}
}
amadou 2002-12-17
  • 打赏
  • 举报
回复
掉下去了,我顶顶,各位帮忙啊
amadou 2002-12-17
  • 打赏
  • 举报
回复
按ITMSC()和jiangpeng(jacky)说的,用3 1 2 3这种格式可以
但用3:1,2,3就不行了,输出的是乱码?!!!
Firstbyte 2002-12-17
  • 打赏
  • 举报
回复
getchar()
amadou 2002-12-17
  • 打赏
  • 举报
回复
那如果有个程序要求输入一整句话,其中有逗号有分号,存放在字符数组中怎么办?
阿发伯 2002-12-17
  • 打赏
  • 举报
回复
Yes!
amadou 2002-12-17
  • 打赏
  • 举报
回复
多谢各位,再问一个问题,输入格式中分号或逗号是不是只做为分隔用而不会真正地输入?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧