为什么std :: ifstream构造函数不带std :: string?

Wil*_*mKF 1 c++ string constructor std ifstream

可能重复:
std :: ifstream类的设计
为什么(i | o)fstream采用const char*参数作为文件名?

看一下std :: ifstream的构造函数,我发现两个:

ifstream ( );
explicit ifstream ( const char * filename, ios_base::openmode mode = ios_base::in );
Run Code Online (Sandbox Code Playgroud)

为什么第二个拿一个const char *而不是一个const std::string &

这是某种避免循环或前向参考吗?

Ker*_* SB 7

这是一个简单的遗漏.没有人及时想到它.这已在C++ 11中得到纠正,其中std::string也接受了.从27.9.1.7/3开始:

explicit basic_ifstream(const string& s, ios_base::openmode mode = ios_base::in);

效果:同样如basic_ifstream(s.c_str(), mode).


归档时间:

查看次数:

2032 次

最近记录:

13 年,1 月 前