c++ - C++ - 使用 strcmp 比较哪个名称按字母顺序排在第一位
问题描述
我是 C++ 新手,并试图实现将左侧(人)与作为参数传入的lessThan()
成员函数进行比较的成员函数;如果一个人的名字按字母顺序排在第一位,则该人被视为“小于”另一个人。Person
this
Person
我在下面创建了我的函数,但是当我运行它时,我得到了错误:
无法将 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' 转换为 'const char*' 以将参数 '1' 转换为 'int strcmp(const char*, const char*)'< /p>
除此之外,我想知道我是否正确使用了this
关键字和strcmp()
功能?应该是< 0
吗?
bool Person::lessThan(Person* per){
if(strcmp(this->name, per->name) < 0){
return true;
}else{
return false;
}
}
解决方案
您需要做的就是返回name < per->name;
并完成它,因为<std::string>
允许进行比较并且它是首选方法。
为了完整起见,您可以修复您的代码:
bool Person::lessThan(const Person* per) const {
return strcmp(this->name.c_str(), per->name.c_str()) < 0;
}
推荐阅读
- sql - 为什么我在运行 SQL spark 时只得到“OK”而不是表结果?
- c# - 面向客户的 ASP.NET CORE 3.1 自定义 Razor 页面路由
- r - Shinyapps.io 门户中的基本闪亮应用程序中的上传错误
- angular - 使用多个 PouchDB 实例在多个 CouchDB 节点之间共享数据
- python - 将文件夹名称添加到导出的文件
- javascript - 在 Bootstrap 中以编程方式关闭模式对话框并在提交时显示另一个页面
- apache - Nginx 作为 Apache 的反向代理
- r - 从源 R 安装包
- csv - 如何将多个唯一命名的 CSV 附件从 GMAIL 导入到 GOOGLESHEETS
- c++ - 我该如何处理这个 C++ Multimap 问题?