返回信息流贴段代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char* argv)
{
//ifstream il("d:\\1.txt",ios::in);
ifstream il("d:\\1.txt",ifstream::in); //两次用不同的模式标志位打开,都能够实现功能
if(il.fail()) { cout<<"Cannot open dbfile!"<<endl; }
string s;
while (il>>s)
{
cout<<s;
}
return 0;
}
这里比较困惑的是: ios::in 在ios的基类中的定义究竟是内部变量还是什么? 为什么其子类ifstream可以使用它父类的标志符? 现在很困惑啊
这是一条镜像帖。来源:北邮人论坛 / soft-design / #32768同步于 2009/2/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[求助] 请达人指教关于标准库的 ios::in 和ifstream::in
lblz
2009/2/25镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
标志位->宏定义->静态常量
很明显这是一个可被外部访问的public静态常量...
ifstream->istream->ios->ios_base
这样应该很明白了吧...
【 在 CNLAS 的大作中提到: 】
: 标志位->宏定义->静态常量
: 很明显这是一个可被外部访问的public静态常量...
: ifstream->istream->ios->ios_base
: ...................
大致明白了, 但还有点奇怪, 不是说C++ 中不提倡使用宏的么? 既然是静态常量, 为什么不直接赋个值, 干吗还要宏定义?