Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/10/2014, 18:44
tyrax
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Respuesta: Error al comparar dos char en un If

Cita:
Iniciado por lareto Ver Mensaje
Por suerte el mensaje de error que muestra el compilador es muy explícito:


El problema es que std::string::substr() devuelve un objeto de tipo std::string, que no se puede "castear" a char.

Resolviendo eso, te vas a encontrar también vas a necesitar revisar la lógica de tu algoritmo.

A modo de ejemplo, y porque puede resultar útil, pongo acá abajo una forma bastante habitual de llevar la cuenta de la cantidad de ocurrencias de elementos en una secuencia. Uso un std::map, que es un "contenedor asociativo" de la biblioteca estándar (http://www.cplusplus.com/reference/map/map/)

Código C++:
Ver original
  1. #include <string>
  2. #include <map>
  3. #include <iostream>
  4.  
  5.  
  6. int main()
  7. {
  8.     std::string texto1;
  9.     texto1 = "some text asd 123456";
  10.  
  11.     std::map<char, int> alfabeto;
  12.  
  13.     for(std::size_t i = 0; i<texto1.length(); ++i)
  14.         alfabeto[texto1[i]]++;
  15.  
  16.     // muestra cómo ha quedado el alfabeto:
  17.     typedef std::map<char, int>::iterator it;
  18.     for(it i=alfabeto.begin(); i!=alfabeto.end(); ++i)
  19.         std::cout << i->first << " --> " << i->second << '\n';
  20.  
  21.     return 0;
  22. }

Lareto :)
Lareto, la solucion que me mostraste funciona de maravilla y en muchas menos lineas de codigo. Estoy intentando entenderla completamente, ya que nunca he trabajado con map ni con std::, no entiendo bien cual es la funcion de ambas. Intentare tomar todo lo que pueda de alli para avanzar en mi codigo.
Sin embargo, de ser posible me gustaria saber como transformar ese std::string a un char simple, ya que solo tengo permitido utilizar estructuras de datos que sean creadas en su totalidad por mi y no estoy seguro de poder utilizar el map.