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

Por suerte el mensaje de error que muestra el compilador es muy explícito:
Cita:
Iniciado por tyrax Ver Mensaje
28:33: error: invalid cast from type 'std::basic_string<char>' to type 'char'
if ((char)texto1.substr(i-1,1) == alfabeto[j].letra){
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 :)