Aquellos de nosotros que hemos visto la belleza de STL intenta utilizar tanto como sea posible, y también animar a otros a usarlo donde vemos el uso de punteros primas y matrices. Scott Meyers ha escrito un libro completo sobre STL, con el título Effective STL. Sin embargo, ¿qué pasó con los desarrolladores de ifstream
que prefirieron char*
sobre std::string
. Me pregunto por qué el primer parámetro de ifstream::open()
es del tipo const char*
, en lugar de const std::string &
. Por favor, eche un vistazo a su firma:Diseño de clase std :: ifstream
void open(const char * filename, ios_base::openmode mode = ios_base::in);
¿Por qué esto? ¿Por qué no esto?
void open(const string & filename, ios_base::openmode mode = ios_base::in);
¿Es este un grave error con el diseño? O este diseño es deliberado? ¿Cuál podría ser la razón? No veo ningún motivo por el que hayan preferido char*
sobre std::string
. Tenga en cuenta que todavía podríamos pasar char*
a la última función que toma std::string
. ¡Eso no es un problema!
Por cierto, soy consciente de que ifstream
es un typedef, así que no hay comentario en mi title.:P. Parece corto por eso lo usé.
La plantilla de clase real es:
template<class _Elem,class _Traits> class basic_ifstream;
Lo único que tienen en común las secuencias con el STL es que ambas son parte de la biblioteca estándar. __ Biblioteca estándar! = STL .__ – sbi