cout,cin属于什么类?

KBTyanhuo 2010-05-02 08:59:52
刚在一本大学C++书中看到一个有关文件操作的例子中有一段代码如下:


……
……
while(infile>>str[i]) //求出文件的长度
{
len++;
}
……
……

对于其中的操作符 >> 不甚理解,一般不都是出现在 cin>>i>>endl; 这样的语句中么?!故而有两点疑问?
1 cin,cout,infile……是不是都有一个公共的类?
2 cin,cout属于什么类?
(补充:新手发帖,第一次,不知道怎么给分....请知内情者明示)
...全文
1101 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
码记 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

还有像 >> 以及 ::和 :::
这样子的运算符重载我理解的很混乱,不知道什么时候该用什么时候不该用,有没有什么心得分享下`
[/Quote]
>>提取的意思,<<插入的意思,想象一下,把箭头的方向当成数据最终流向的方向就OK了。
这个::符号应该不是很难理解吧?
学过C语言吗?
C语言struct里面的成员要引用的话不也需要stu.name或者stu->name,一个意思。只不过C++里面有一些是已经定义好的,库里面自带封装了许多类,直接调用。

觉得C++最难的地方还再于无数的重载。
刚刚开始学习C++。
华天下 2011-12-02
  • 打赏
  • 举报
回复
C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream和ostream类的实例,这两个类是在iostream文件中定义的。为ostream类定义的插入操作符(<<)使得将数据插入到输出流成为可能;为istream类定义的抽象操作符(>>)能够从输入流中抽取信息。cin和cout都是智能对象,能够根据上下文自动将信息从一种形式转换为另一种形式。
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复
答案都不是很满意...
steptodream 2010-05-02
  • 打赏
  • 举报
回复
iostream
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复
还有像 >> 以及 ::和 :::
这样子的运算符重载我理解的很混乱,不知道什么时候该用什么时候不该用,有没有什么心得分享下`
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复

非常谢谢大家帮我解惑

那么现在在哪里可以知道这种继承关系呢?
我的意思是指有没有一种对应表,表里面清晰的划出了“文件操作”这一块哪些系统对象属于哪些类?
白云飘飘飘 2010-05-02
  • 打赏
  • 举报
回复
标准输出输入流,字符串流,文件流都是从这两个类继承而来的。
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复
回复六楼:
真心求教!
那么有infile>>str[i]这样的表达式存在是不是说明了infile也继承于这两个类?
或者我可以这样写:
class A :public istream,public ostream
{……};
在申明了A a;之后可以有表达式 a>>str[i] ?
snowzl 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
cin,cout不是类,而是IO流对象。
[/Quote]
正解
pengzhixi 2010-05-02
  • 打赏
  • 举报
回复
istream和ostream
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复
题目:利用seekg()函数将文件letter.dat中的内容逆序输出,即实现文件的倒读功能。
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复
这里是该例子的全过程:
#include "StdAfx.h"
#include <iostream.h>
#include <fstream.h>
int main(int argc, char* argv[])
{
int i=0,len=0; //len表示文件长度
char str[100];
ifstream infile("letter.dat"); //打开或创建文件letter
if(!infile){
cout<<"文件没有打开!"<<endl;
return 0;
}
while(infile>>str[i]){
len++;
}
cout<<"文件长度为:"<<len<<endl;
cout<<"文件倒读为:";
infile.close(); //关闭文件
infile.open("letter.dat",ios::ate); //打开文件并将文件指针指到尾
if(!infile){
cout<<"文件没有打开!"<<endl;
return 0;
}
while(i<len){
infile.seekg(-i-1,ios::end); //设定相对于文件尾的偏移量(负数)
infile.get(str[i]); //读取数据
cout<<str[i]; //输出数据
i++;
}
cout<<endl;
cin>>i;
return 0;
}
KBTyanhuo 2010-05-02
  • 打赏
  • 举报
回复

回复一楼:
我知道cin和cout是对象,对象是属于类的,我的问题是:cin,cout(这两个对象)属于什么类...
我想知道这个流类的具体名字....
sduxiaoxiang 2010-05-02
  • 打赏
  • 举报
回复
stdio
pengzhixi 2010-05-02
  • 打赏
  • 举报
回复
cin,cout不是类,而是IO流对象。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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