Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/10/2014, 19:55
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al comparar dos char en un If

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 :)