我知道对于C来说,如果两个词都是完全较低或完全是大写的话,那么基本的比较运算符就可以完成任务.我有一个字符串数组,字母可以从低到高不等.这是我可以使用的字符串的一个小问题:
“丰富的生活CH”
“新生活WMN MNSTRY”
“新生活大会”
我知道Java中存在函数String.compareToIgnoreCase()
.这个函数有C等价吗?
解决方法
我不知道标准库中的任何不区分大小写的函数,但您可以为std :: equal指定自定义谓词:
std::string a("hello"); std::string b("HELLO"); std::cout << std::equal(a.begin(),a.end(),b.begin(),[] (const char& a,const char& b) { return (std::tolower(a) == std::tolower(b)); });
有关考虑区域设置的解决方案,请参阅Case insensitive std::string.find().
#include <locale> template<typename charT = std::string::value_type> struct my_equal { my_equal( const std::locale& loc ) : loc_(loc) {} bool operator()(charT ch1,charT ch2) { return std::toupper(ch1,loc_) == std::toupper(ch2,loc_); } private: const std::locale& loc_; }; int main() { std::string a("hello"); std::string b("HELLO"); std::cout << std::equal(a.begin(),my_equal<>(std::locale())); }
原文地址:https://www.jb51.cc/c/116651.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。