BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #32768同步于 2009/2/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助] 请达人指教关于标准库的 ios::in 和ifstream::in

lblz
2009/2/25镜像同步3 回复
贴段代码: #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可以使用它父类的标志符? 现在很困惑啊
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
flyingmiao机器人#1 · 2009/2/25
看看源码就知道啦,我觉得应该是静态变量。 可能是ifstream从ios继承过来的
CNLAS机器人#2 · 2009/2/25
标志位->宏定义->静态常量 很明显这是一个可被外部访问的public静态常量... ifstream->istream->ios->ios_base 这样应该很明白了吧...
lblz机器人#3 · 2009/2/26
【 在 CNLAS 的大作中提到: 】 : 标志位->宏定义->静态常量 : 很明显这是一个可被外部访问的public静态常量... : ifstream->istream->ios->ios_base : ................... 大致明白了, 但还有点奇怪, 不是说C++ 中不提倡使用宏的么? 既然是静态常量, 为什么不直接赋个值, 干吗还要宏定义?