首页 文章

为什么std :: ifstream构造函数不采用std :: string? [重复]

提问于
浏览
1

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

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

ifstream ( );
explicit ifstream ( const char * filename, ios_base::openmode mode = ios_base::in );

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

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

2 回答

  • -1

    这是一个简单的遗漏 . 没有人及时想到它 . 这已在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)相同 .

  • 6

    您的编译器已过期 . 升级它,你应该找到一个 std::string 构造函数 .

相关问题