Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nrmc17 en 2 Diciembre 2015, 01:51 am



Título: Comparación de strings que estan en arreglos.
Publicado por: nrmc17 en 2 Diciembre 2015, 01:51 am
Buenas caballeros, trabajando en un proyecto, que asemeja a un diccionario virtual en el que el usuario define palabras que aun no estan definidas... pero me da un error de compilación, dice cannot convert string to const char for argument 1 to int stricmp(const char*, const char*) en la linea de stricmp.

Código
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. const int s=100;
  5. int c=0;
  6. bool exst=false;
  7. string A[s][2]={NULL};
  8. void comparar(string);
  9. void agregar(string);
  10. int main(){
  11. string n;
  12. as:cin.clear();
  13. cout<<"Ingrese su palabra"<<endl;
  14. getline(cin, n);
  15. comparar(n);
  16. exst=false;
  17. goto as;
  18. return 0;
  19. }
  20. void comparar(string n){
  21. for(int i=0; i<s; i++){
  22. if(0==stricmp(n, A[i][1])){
  23. cout<<A[i][2];
  24. exst=true;
  25. }
  26. }
  27. if(exst==false){
  28. agregar(n);
  29. }
  30. }
  31. void agregar(string n){
  32. string q;
  33. cin.clear();
  34. getline(cin, q);
  35. c+=1;
  36. A[c][1]=n;
  37. A[c][2]=q;
  38. }
Cualquier ayuda es agradecida :D


Título: Re: Comparación de strings que estan en arreglos.
Publicado por: class_OpenGL en 2 Diciembre 2015, 06:40 am
Pon tu código entre etiquetas GeSHI para mejorar la visibilidad tu código.

La función stricmp necesita una cadena de caracteres, pero lo que le estás dando es un objeto std::string. Para solucionarlo, tienes que "convertir" ese objeto a cadena de caracteres. Para ello, utiliza el método de la clase std::string llamado .c_str(), que te retorna la cadena de caracteres equivalente a ese std::string:

Código
  1. stricmp(objeto_string[0].c_str(), objeto_string[1].c_str());


Título: Re: Comparación de strings que estan en arreglos.
Publicado por: nrmc17 en 3 Diciembre 2015, 00:04 am
Muchas gracias, me ha sido muy util tu respuesta y espero les sea util a cualquier persona que en el futuro tenga esta duda. De verdad muchas gracias.