Почему конструктор std :: ifstream не принимает std :: string?

Возможный дубликат:
Дизайн класса 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 &?

Это что-то вроде избегания округлости или прямой ссылки?

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 конструктор.

-1

По вопросам рекламы [email protected]