关于数据流输入操作的三个问题请教

Sapphy 2004-09-19 01:02:58
关于输入数据流操作的三个问题请教

//问题1
#include <iostream.h>
void main()
{
char name[20];
char id[8];



cin >> name >> id;
cout << "Name=" << name << ", Id=" << id << endl;
}



//运行时我输入:zhang 111111,回车后结果显示为:



//Name=zhang, Id=111111



//于是我就疑惑了,我在姓名和ID之间用的是空格,cin怎么也能认识啊?难道空格不能作为一个普通的字符串来看吗?



//------------------------------------------------------------------------------------------------------------------------



//问题2
istream &operator >> (istream &is, Matrix &m)
{
for(int i=0; i<m.rows; i++)
for(int j=0; j<m.cols; j++)
is >> m(i, j); //()符号是定义了重载的



return is;
}



//这是为定义的Matrix(矩阵)类写的一个重载抽取运算符函数,代码主要功能就是将数据流的内容逐一的写道m的各元素中,is>>m(i,j);已经完成了任务,所以这里的 return is似乎有些不必要,可否将函数头改为



void operator >>(istream &is, Matrix &m) 然后不返回任何的值?



//------------------------------------------------------------------------------------------------------------------------



问题3:谁能告诉我cin.get(char *, int, int) 后两个参数的意思?

...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-09-19
  • 打赏
  • 举报
回复
1.cin输入时遇到空格、换行或回车就结束。
----
类似于printf函数,是一个数据项的结束
cin >> name >> id;

你输入
zhang 111111
于是把zhang给了name,111111给了id
idleguy 2004-09-19
  • 打赏
  • 举报
回复
楼主的第二个问题。

其实原因在在你的第一个问题里面已经写了。

考虑下面这行:

cin >> name >> id;

如果operator >>返回的是void的话,那么第二个operator >>是谁的operator >>?

类似的,在问题二的operator>>里面,同样要考虑这样连续用的情况。
详细的解释好像Think in c++里面有。
hcj2002 2004-09-19
  • 打赏
  • 举报
回复
1.cin输入时遇到空格、换行或回车就结束。
2.return is时返回输入流,这样主要是为了其他的运算方便(不知道怎么说了^_^),像strcpy()返回char * 一样。
3.第二个是字符缓冲区的大小,最后一个参数应该是char类型的吧?

istream& get( char* pch, int nCount, char delim = '\n' );

istream& get( unsigned char* puch, int nCount, char delim = '\n' );

istream& get( signed char* psch, int nCount, char delim = '\n' );

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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