Hey les gars, j'essaye d'écrire un programme qui calcule le GPA d'un étudiant. Pour quelque raison le compilateur me donne une erreur en comparant deux chaînes, mais je ne peux pas sembler trouver les raisons. Ci-dessous vous trouverez le morceau de code qui me donne une erreur. J'apprécierais vraiment que quelqu'un puisse m'aider à le comprendre.En comparant une chaîne avec un caractère en C++
ERREUR: Impossible de convertir 'std :: string' à 'const char *' pour argument '1' à 'int strncmp (const char *, const char *, size_t)'
double StudentInfo::getGPA() {
double temp = 0;
for(int i = 0; i < totalCourses; i++) {
if(strncmp(Courses[i].getGrade(), "A") == 0) //Gets string "grade", and compares it to "A".
temp = temp + 4;
if(strncmp(Courses[i].getGrade(),"A-", 2) == 0)
temp = temp + 3.7;
if(strncmp(Courses[i].getGrade(), "B+", 2) == 0)
temp = temp + 3.3;
if(strncmp(Courses[i].getGrade(), "B") == 0)
temp = temp + 3;
if(strncmp(Courses[i].getGrade(), "B-", 2) == 0)
temp = temp + 2.7;
if(strncmp(Courses[i].getGrade(), "C+", 2) == 0)
temp = temp + 2.3;
if(strncmp(Courses[i].getGrade(), "C") == 0)
temp = temp + 2;
if(strncmp(Courses[i].getGrade(), "C-") == 0)
temp = temp + 1.7;
if(strncmp(Courses[i].getGrade(), "D+") == 0)
temp = temp + 1.3;
if(strncmp(Courses[i].getGrade(), "D") == 0)
temp = temp + 1;
else
temp = temp + 0;
}
GPA = temp/totalCourses;
return GPA;}
Je ne sais pas c'est votre erreur, mais la plupart de vos lignes de strncmp manque le troisième argument (donnant la longueur à comparer) –