c++ string string.h

c++ string size



<string.h> o<string>? (6)

¡Es muy diferente!

<string.h> esta biblioteca para cadenas de estilo C

<string> para cadenas de C ++

por estándar en C ++ debería usar <cstring> lugar de <string.h>

¿Cuál es la mejor manera de incluir el encabezado estándar string.h en un proyecto de C ++? Usando el [punto] h al final, así:

#include <string.h>

o simplemente escribiendo

#include <string>

O, tal vez, utilizando otra forma que no sé?

¡Gracias!


Esos son dos encabezados diferentes.

  • <string> es para c ++ std::string class
  • <string.h> es para funciones de cadena c (como strlen() , etc.), que debería ser <cstring> para el proyecto c ++ (este es el tercero, no lo sabías).

La norma es

#include <string>


Los archivos de encabezados *.h son a menudo archivos de encabezado C, que puede usar en C ++ tal vez con el extern "C" { ... }

Los encabezados sin ningún *.h son generalmente encabezados de C ++ genuinos.

Es una regla de oro solamente.

Los estándares C ++ más recientes y anteriores (c ++ 11, C ++ 03) definen encabezados como <cstdio> para envolver correctamente los encabezados C originales, usando espacios de nombres, etc.


string es c ++ stl headfile proporciona la clase de plantilla ''string'' string.h is c standard headfile proporciona muchas funciones para usar. como strccc strcpy memcpy. Si desea usarlo en el espacio de nombres estándar, que no es el uso del espacio de nombres de globo o no quiere usar string.h, puede usar la cadena de caracteres en su lugar.


Wiki dice:

La biblioteca estándar de C ++ también incorpora 18 encabezados de la biblioteca estándar ISO C90 C que terminan con ".h", pero su uso está en desuso. Todos los demás encabezados de la biblioteca estándar de C ++ NO terminan en ".h".

Cada encabezado de la biblioteca estándar de C se incluye en la biblioteca estándar de C ++ con un nombre diferente, generado al eliminar el .h, y al agregar una ''c'' al comienzo; por ejemplo, ''time.h'' se convierte en ''ctime''.