Hola;
std:: es el nombre del espacio de nombres (namespace) donde se encuentran los nombres de cout, string, map, ... y todos los otros nombres del espacio de nombres standar. Tú los estás incluyendo a todos al poner
using namespace std; que no es que esté mal, sólo que de esa manera vuelcas los miles de nombres del namespace std en la unidad que estás compilando. En general,
using namespace std; sólo se usa en ejemplos simples (como este), pero no en la vida real. Como regla general, creo que podría decirse que ese
using namespace std; puede ir en un .cpp (aunque no sea recomendable), pero nunca de los jamases en un .h
una
std::string es un objeto que representa una secuencia de caracteres (o si pones ese ordinario
using namespace std;, podrás poner la palabra
string, sin especificar que se trata de la clase
string del
namespace std, ¿me explico?)
Bien, entonces, creas un objeto de tipo
std::string con algo como
std::string texto = "Hola mundo!";
Y la función
std::string::substr(); quiere decir que
substr() es una función miembro de la clase
string que se encuentra en el
namespace std. Y esta función devuelve un nuevo objeto de tipo
std::string.
Otra función miembro de la clase
std::string es su
std::string operator[std::size_t pos], que devuelve una referencia al elemento que se encuentra en la posición "pos".
Por ejemplo, si tienes
Código:
std::string texto = "Hola mundo!";
texto[0] es una referencia al primer carácter ('H');
texto[1] es una referencia al segundo carácter ('o');
etcétera.
En lugar de tratar de convertir una std::string (que es lo que devuelve substr()) en un carácter, puedes obtener cada uno de los caracteres de "texto" usando la función miembro
std::string operator[std::size_t pos];
Si no te molesta, yo te recomendaría que primero te asegures de que has entendido qué es una std::string y sus funciones miembro más usuales. Para eso nada mejor que un buen tutorial, o un buen libro introductorio al C++, por ejemplo. Yo perdí, y sigo perdiendo, muchísimo tiempo al saltarme los conceptos básicos dando por supuesto que más adelante los iba a entender en detalle, y por supuesto jamás resultó.
Lareto :)