Je suis en train de comparer un tableau de caractères à une chaîne comme ceci:C++ Comparer tableau de caractères avec la chaîne
const char *var1 = " ";
var1 = getenv("myEnvVar");
if(var1 == "dev")
{
// do stuff
}
Cette instruction if valide jamais été aussi vrai ... quand je sortie var1 est « dev » , Je pensais peut-être qu'il a quelque chose à voir avec une chaîne terminée par zéro, mais les strlen de "dev" et var1 sont égaux ... Je pensais aussi que peut-être var1 == "dev" comparait "dev" contre l'emplacement mémoire de var1 au lieu de la valeur. * var1 == "dev" aboutit à une erreur .... essayé beaucoup de choses, probablement une solution simple pour le développeur saavy C++ (je n'ai pas codé C++ dans un temps looong).
modifier: nous avons essayé
if(strcmp(var1, "dev") == 0)
et
if(strncmp(var1, "dev", 3) == 0)
Merci
modifier: Après avoir testé à la maison, je vais juste suggérer mon collègue modifie la type de données à une chaîne. Je crois qu'il comparait un tableau de caractères de grande taille à une chaîne. J'ai mis en place un programme qui produit sizeof, strlen, etc pour nous aider à y travailler. Merci à tous pour votre aide.
On dirait que vous utilisez des chaînes C brutes et non le C++ classe String. – tchen
essayez d'utiliser un débogueur pour voir si var1 est réellement rempli avec "dev1". De plus, si var1 est réellement une chaîne de style C++, utilisez la fonction c_str() pour obtenir une chaîne de style c qui peut être comparée à votre char * en utilisant strcmp(); – NomeN
Vous avez essayé strcmp; génial - quel est le résultat?(Comme c'est un bon moyen d'y aller) – xtofl