gpt4 book ai didi

c++ - 在 C++ 中比较一个字符串和一个字符

转载 作者:太空狗 更新时间:2023-10-29 23:31:31 25 4
gpt4 key购买 nike

大家好,我正在尝试编写一个程序来计算学生的 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。如果你想要字符串相等,你可以这样写代码:

if (Courses[i].getGrade() == "A")
// ...

edit 请注意,这适用于 std::string,因为它有一个重载的 operator==

关于c++ - 在 C++ 中比较一个字符串和一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4234744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com