C++ es un lenguaje orientado a objetos. Esto quiere decir que C++ permite la creación y uso de objetos para modelar y encapsular las diferentes funcionalidades de una aplicación.
Uno de estos objetos es la clase "string". La clase "string", simplificando, contiene internamente un puntero tipo char y un entero... algo así (escrito en C):
typedef struct
{
char* puntero;
int longitud;
}
Alrededor de este diseño, la clase "string" implementa una serie de funciones que facilitan enormemente el uso de cadenas de caracteres en una aplicación:
* Implementado el operador copia: hace innecesario el uso de la función strcpy
std::string cad1 = "abcd";
std::string cad2;
// En vez de strcpy( cad1, cad2 );
cad1 = cad2;
* Soporta iteradores: facilita su manipulación en bucles
* Gestiona memoria dinámica de forma interna: evita lagunas de memoria, buffer overflow, ...
* Implementa operaciones de búsqueda.
* Implementa operador comparación: permite comparar strings de forma más natural que C.
// En C++
if ( cad1 == cad 2 )
// En C
if ( strcmp( cad1, cad2 ) == 0 )
* Operadores de inserción: Permite componer cadenas de forma simple:
std::string cad;
cad << "Hola" << " " << "mundo";
Todas estas operaciones tienen su símil en un array de tipo char... pero hay que tener más cuidado al manipular un puntero a tipo char y, claro, no es lo mismo usar operadores que usar funciones.
Bueno, hasta aquí el comentario para desgranar un poco las diferencias entre la clase string y las cadenas tipo "char".
Las clases en C++, a diferencia de los tipos nativos ( int, char, char*, ... ), tienen un archivo de cabecera y una implementación. Para poder usar una clase necesitas, por tanto, incluir su archivo de cabecera en tu código. De otra forma el compilador no sabe cómo utilizar esa clase ( no conoce el tamaño que ocupa, necesario para hacer reservas en la pila, no conoce el formato ni la ubicación de las funciones, ... )
En el caso de la clase "string", tal y como te indicó
noele1995, se encuentra en
#include <string>
Nota que los includes de la librería estándar de C++ no tienen ".h", es una diferencia básica entre C y C++.