1

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

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

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

为什么第二个需要 aconst char *而不是 a const std::string &

这是某种避免循环或前向引用吗?

4

2 回答 2

8

这是一个简单的遗漏。没有人及时考虑。这已在 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)

于 2012-09-25T00:06:25.663 回答
0

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

于 2012-09-25T00:06:40.110 回答