C++ - 使用 strcmp 比较哪个名称按字母顺序排在第一位
C++ - using strcmp to compare which name comes first in alphabetical order
我是 C++ 新手,正在尝试实现 lessThan()
成员函数,该函数将左侧(this
人)的 Person
与 Person
作为参数传入;如果一个人的名字按字母顺序排在第一位,则该人被认为“低于”另一个人。
我在下面创建了我的函数,但是当我 运行 它时,我得到了错误:
cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’
除此之外,我想知道我是否正确使用了 this
关键字和 strcmp()
函数?应该是< 0
?
bool Person::lessThan(Person* per){
if(strcmp(this->name, per->name) < 0){
return true;
}else{
return false;
}
}
您需要做的就是 return name < per->name;
并完成它,因为 <std::string>
允许进行比较并且这是首选方法。
为了完整起见,您可以修复您的代码:
bool Person::lessThan(const Person* per) const {
return strcmp(this->name.c_str(), per->name.c_str()) < 0;
}
我是 C++ 新手,正在尝试实现 lessThan()
成员函数,该函数将左侧(this
人)的 Person
与 Person
作为参数传入;如果一个人的名字按字母顺序排在第一位,则该人被认为“低于”另一个人。
我在下面创建了我的函数,但是当我 运行 它时,我得到了错误:
cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’
除此之外,我想知道我是否正确使用了 this
关键字和 strcmp()
函数?应该是< 0
?
bool Person::lessThan(Person* per){
if(strcmp(this->name, per->name) < 0){
return true;
}else{
return false;
}
}
您需要做的就是 return name < per->name;
并完成它,因为 <std::string>
允许进行比较并且这是首选方法。
为了完整起见,您可以修复您的代码:
bool Person::lessThan(const Person* per) const {
return strcmp(this->name.c_str(), per->name.c_str()) < 0;
}