我们这些已经看到 STL 之美的人尝试尽可能多地使用它,并鼓励其他人在我们看到他们使用原始指针和数组的任何地方使用它。Scott Meyers写了一整本关于 STL 的书,标题为Effective STL。ifstream
然而,他们更喜欢的开发人员发生了char*
什么std::string
。我想知道为什么的第一个参数ifstream::open()
是 type const char*
,而不是const std::string &
. 请看一下它的签名:
void open(const char * filename, ios_base::openmode mode = ios_base::in );
为什么这个?为什么不这样:
void open(const string & filename, ios_base::openmode mode = ios_base::in );
这是设计的严重错误吗?还是这个设计是故意的?可能是什么原因?我看不出他们为什么char*
偏爱std::string
. 请注意,我们仍然可以传递char*
给采用std::string
. 这不是问题!
顺便说一句,我知道这ifstream
是一个 typedef,所以不要对我的标题发表评论。:P。它看起来很短,这就是我使用它的原因。
实际的类模板是:
template<class _Elem,class _Traits> class basic_ifstream;