【发布时间】:2010-11-20 20:05:17
【问题描述】:
大家好,我正在尝试编写一个计算学生 GPA 的程序。出于某种原因,编译器在比较两个字符串时给了我一个错误,但我似乎找不到原因。您将在下面找到给我错误的代码。如果有人能帮我弄清楚,我将不胜感激。
错误:无法将参数“1”转换为“std::string”到“const char*”到“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;}
【问题讨论】:
-
不确定这是您的错误,但您的大多数 strncmp 行都缺少第三个参数(给出要比较的长度)
标签: c++