Comparación de strings que estan en arreglos.

Iniciado por nrmc17, 2 Diciembre 2015, 01:51 AM

0 Miembros y 1 Visitante están viendo este tema.

nrmc17

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.


#include<iostream>
#include<string>
using namespace std;
const int s=100;
int c=0;
bool exst=false;
string A[s][2]={NULL};
void comparar(string);
void agregar(string);
int main(){
string n;
as:cin.clear();
cout<<"Ingrese su palabra"<<endl;
getline(cin, n);
comparar(n);
exst=false;
goto as;
return 0;
}
void comparar(string n){
for(int i=0; i<s; i++){
if(0==stricmp(n, A[i][1])){
cout<<A[i][2];
exst=true;
}
}
if(exst==false){
agregar(n);
}
}
void agregar(string n){
string q;
cin.clear();
getline(cin, q);
c+=1;
A[c][1]=n;
A[c][2]=q;
}

Cualquier ayuda es agradecida :D

class_OpenGL

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 (cpp) [Seleccionar]
stricmp(objeto_string[0].c_str(), objeto_string[1].c_str());

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

nrmc17

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.