1. string类的operator==/operator!=/operator< /operator<=/operator>/operator>=/compare
1.1 bool operator==
- 原型:bool operator== (const string& lhs, const string& rhs) noexcept;
- 说明: 比较string型字符串lhs与string型字符串rhs是否相等。
- 原型:bool operator== (const char* lhs, const string& rhs);
- 说明: 比较char型字符串lhs与string型字符串rhs是否相等。
- 原型:bool operator== (const string& lhs, const char* rhs);
- 说明: 比较string型字符串lhs与char型字符串rhs是否相等。
- 注意: 相等返回true,不相等返回false。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str0="a lazy dog."; string str1="a lazy dog."; cout<<"bool operator== (const string& lhs, const string& rhs) noexcept;"<<endl; if (str0 == str1) { cout<<str0<<" 等于 "<<str1<<endl; } else { cout<<str0<<" 不等于 "<<str1<<endl; } cout<<"bool operator== (const char* lhs, const string& rhs);"<<endl; if ("a lazy dog." == str1) { cout<<"a lazy dog."<<" 等于 "<<str1<<endl; } else { cout<<"a lazy dog."<<" 不等于 "<<str1<<endl; } cout<<"bool operator== (const string& lhs, const char* rhs);"<<endl; if (str0 == "a lazy dog.") { cout<<str0<<" 等于 "<<"a lazy dog."<<endl; } else { cout<<str0<<" 不等于 "<<"a lazy dog."<<endl; } system("pause"); return 0; } =>bool operator== (const string& lhs, const string& rhs) noexcept; a lazy dog. 等于 a lazy dog. bool operator== (const char* lhs, const string& rhs); a lazy dog. 等于 a lazy dog. bool operator== (const string& lhs, const char* rhs); a lazy dog. 等于 a lazy dog.
1.2 bool operator!=
- 原型:bool operator!= (const string& lhs, const string& rhs) noexcept;
- 说明: 比较string型字符串lhs与string型字符串rhs是否不相等。
- 原型:bool operator!= (const char* lhs, const string& rhs);
- 说明: 比较char型字符串lhs与string型字符串rhs是否不相等。
- 原型:bool operator!= (const string& lhs, const char* rhs);
- 说明: 比较string型字符串lhs与char型字符串rhs是否不相等。
- 注意: 不相等返回ture,相等返回false。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str0="a lazy dog"; string str1="a lazy dog."; cout<<"bool operator!= (const string& lhs, const string& rhs) noexcept;"<<endl; if (str0 != str1) { cout<<str0<<" 不等于 "<<str1<<endl; } else { cout<<str0<<" 等于 "<<str1<<endl; } cout<<"bool operator!= (const char* lhs, const string& rhs);"<<endl; if ("a lazy dog" != str1) { cout<<"a lazy dog"<<" 不等于 "<<str1<<endl; } else { cout<<"a lazy dog"<<" 等于 "<<str1<<endl; } cout<<"bool operator!= (const string& lhs, const char* rhs);"<<endl; if (str0 != "a lazy dog.") { cout<<str0<<" 不等于 "<<"a lazy dog."<<endl; } else { cout<<str0<<" 等于 "<<"a lazy dog."<<endl; } system("pause"); return 0; } =>bool operator!= (const string& lhs, const string& rhs) noexcept; a lazy dog 不等于 a lazy dog. bool operator!= (const char* lhs, const string& rhs); a lazy dog 不等于 a lazy dog. bool operator!= (const string& lhs, const char* rhs); a lazy dog 不等于 a lazy dog.
1.3 bool operator<
- 原型:bool operator< (const string& lhs, const string& rhs) noexcept;
- 说明: 比较string型字符串lhs是否小于string型字符串rhs。
- 原型:bool operator< (const char* lhs, const string& rhs);
- 说明: 比较char型字符串lhs是否小于string型字符串rhs。
- 原型:bool operator< (const string& lhs, const char* rhs);
- 说明: 比较string型字符串lhs是否小于char型字符串rhs。
- 注意: 小于返回true,大于或等于返回false。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str0="a lazy dog"; string str1="a lazy dog."; cout<<"bool operator< (const string& lhs, const string& rhs) noexcept;"<<endl; if (str0 < str1) { cout<<str0<<" 小于 "<<str1<<endl; } else { cout<<str0<<" 大于等于 "<<str1<<endl; } cout<<"bool operator< (const char* lhs, const string& rhs);"<<endl; if ("a lazy dog" < str1) { cout<<"a lazy dog"<<" 小于 "<<str1<<endl; } else { cout<<"a lazy dog"<<" 大于等于 "<<str1<<endl; } cout<<"bool operator< (const string& lhs, const char* rhs);"<<endl; if (str0 < "a lazy dog.") { cout<<str0<<" 小于 "<<"a lazy dog."<<endl; } else { cout<<str0<<" 大于等于 "<<"a lazy dog."<<endl; } system("pause"); return 0; } =>bool operator< (const string& lhs, const string& rhs) noexcept; a lazy dog 小于 a lazy dog. bool operator< (const char* lhs, const string& rhs); a lazy dog 小于 a lazy dog. bool operator< (const string& lhs, const char* rhs); a lazy dog 小于 a lazy dog.
1.4 bool operator<=
- 原型:bool operator<= (const string& lhs, const string& rhs) noexcept;
- 说明: 比较string型字符串lhs是否小于或等于string型字符串rhs。
- 原型:bool operator<= (const char* lhs, const string& rhs);
- 说明: 比较char型字符串lhs是否小于等于string型字符串rhs。
- 原型:bool operator<= (const string& lhs, const char* rhs);
- 说明: 比较string型字符串lhs是否小于等于char型字符串rhs。
- 注意: 小于或等于返回true,大于返回false。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str0="a lazy dog"; string str1="a lazy dog."; cout<<"bool operator<= (const string& lhs, const string& rhs) noexcept;"<<endl; if (str0 <= str1) { cout<<str0<<" 小于等于 "<<str1<<endl; } else { cout<<str0<<" 大于 "<<str1<<endl; } cout<<"bool operator<= (const char* lhs, const string& rhs);"<<endl; if ("a lazy dog" <= str1) { cout<<"a lazy dog"<<" 小于等于 "<<str1<<endl; } else { cout<<"a lazy dog"<<" 大于 "<<str1<<endl; } cout<<"bool operator<= (const string& lhs, const char* rhs);"<<endl; if (str0 <= "a lazy dog.") { cout<<str0<<" 小于等于 "<<"a lazy dog."<<endl; } else { cout<<str0<<" 大于 "<<"a lazy dog."<<endl; } system("pause"); return 0; } =>bool operator<= (const string& lhs, const string& rhs) noexcept; a lazy dog 小于等于 a lazy dog. bool operator<= (const char* lhs, const string& rhs); a lazy dog 小于等于 a lazy dog. bool operator<= (const string& lhs, const char* rhs); a lazy dog 小于等于 a lazy dog.
1.5 bool operator>
- 原型:bool operator> (const string& lhs, const string& rhs) noexcept;
- 说明: 比较string型字符串lhs是否大于string型字符串rhs。
- 原型:bool operator> (const char* lhs, const string& rhs);
说明: 比较char型字符串lhs是否大于string型字符串rhs。 - 原型:bool operator> (const string& lhs, const char* rhs);
说明: 比较string型字符串lhs是否大于char型字符串rhs。 - 注意: 大于返回true,小于或等于返回false。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str0="a lazy dog."; string str1="a lazy dog"; cout<<"bool operator> (const string& lhs, const string& rhs) noexcept;"<<endl; if (str0 > str1) { cout<<str0<<" 大于 "<<str1<<endl; } else { cout<<str0<<" 小于等于 "<<str1<<endl; } cout<<"bool operator> (const char* lhs, const string& rhs);"<<endl; if ("a lazy dog." > str1) { cout<<"a lazy dog."<<" 大于 "<<str1<<endl; } else { cout<<"a lazy dog."<<" 小于等于 "<<str1<<endl; } cout<<"bool operator> (const string& lhs, const char* rhs);"<<endl; if (str0 > "a lazy dog") { cout<<str0<<" 大于 "<<"a lazy dog"<<endl; } else { cout<<str0<<" 小于等于 "<<"a lazy dog"<<endl; } system("pause"); return 0; } =>bool operator> (const string& lhs, const string& rhs) noexcept; a lazy dog. 大于 a lazy dog bool operator> (const char* lhs, const string& rhs); a lazy dog. 大于 a lazy dog bool operator> (const string& lhs, const char* rhs); a lazy dog. 大于 a lazy dog
1.6 bool operator>=
- 原型:bool operator>= (const string& lhs, const string& rhs) noexcept;
说明: 比较string型字符串lhs是否大于或等于string型字符串rhs。 - 原型:bool operator>= (const char* lhs, const string& rhs);
说明: 比较char型字符串lhs是否大于或等于string型字符串rhs。 - 原型:bool operator>= (const string& lhs, const char* rhs);
说明: 比较string型字符串lhs是否大于或等于char型字符串rhs。 - 注意: 大于或等于返回true,小于返回false。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str0="a lazy dog."; string str1="a lazy dog"; cout<<"bool operator>= (const string& lhs, const string& rhs) noexcept;"<<endl; if (str0 > str1) { cout<<str0<<" 大于等于 "<<str1<<endl; } else { cout<<str0<<" 小于 "<<str1<<endl; } cout<<"bool operator>= (const char* lhs, const string& rhs);"<<endl; if ("a lazy dog." > str1) { cout<<"a lazy dog."<<" 大于等于 "<<str1<<endl; } else { cout<<"a lazy dog."<<" 小于 "<<str1<<endl; } cout<<"bool operator>= (const string& lhs, const char* rhs);"<<endl; if (str0 > "a lazy dog") { cout<<str0<<" 大于等于 "<<"a lazy dog"<<endl; } else { cout<<str0<<" 小于 "<<"a lazy dog"<<endl; } system("pause"); return 0; } =>bool operator>= (const string& lhs, const string& rhs) noexcept; a lazy dog. 大于等于 a lazy dog bool operator>= (const char* lhs, const string& rhs); a lazy dog. 大于等于 a lazy dog bool operator>= (const string& lhs, const char* rhs); a lazy dog. 大于等于 a lazy dog
1.7 std::string::compare
- 原型:int compare (const string& str) const noexcept;
- 说明:比较源字符串和string型字符串str的大小。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str1 ("green apple"); string str2 ("red apple"); cout<<"int compare (const string& str) const noexcept;"<<endl; int result = str1.compare(str2); if(result == 0) { cout<<str1<<" 等于 "<<str2<<endl; } else { if(result > 0) { cout<<str1<<" 大于 "<<str2<<endl; } else { cout<<str1<<" 小于 "<<str2<<endl; } } system("pause"); return 0; } =>int compare (const string& str) const noexcept; green apple 小于 red apple
- 原型:int compare (size_t pos, size_t len, const string& str) const;
- 说明:比较源字符串以下标为pos处开始的len个字符组成的字符串与string型字符串str的大小。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str1 ("green apple"); string str2 ("apple"); cout<<"int compare (size_t pos, size_t len, const string& str) const;"<<endl; int result = str1.compare(6, 5, str2); if(result == 0) { cout<<str1.substr(6, 5)<<" 等于 "<<str2<<endl; } else { if(result > 0) { cout<<str1.substr(6, 5)<<" 大于 "<<str2<<endl; } else { cout<<str1.substr(6, 5)<<" 小于 "<<str2<<endl; } } system("pause"); return 0; } =>int compare (size_t pos, size_t len, const string& str) const; apple 等于 apple
- 原型:int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos) const;
- 说明:比较源字符串以下标为pos处开始的len个字符组成的字符串与string型字符串str中以下标为subpos处开始的sublen个字符组成的字符串的大小。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str1 ("green apple"); string str2 ("red apple"); cout<<"int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos) const;"<<endl; int result = str1.compare(6, 5, str2, 4, 5); if(result == 0) { cout<<str1.substr(6, 5)<<" 等于 "<<str2.substr(4, 5)<<endl; } else { if(result > 0) { cout<<str1.substr(6, 5)<<" 大于 "<<str2.substr(4, 5)<<endl; } else { cout<<str1.substr(6, 5)<<" 小于 "<<str2.substr(4, 5)<<endl; } } system("pause"); return 0; } =>int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos) const; apple 等于 apple
- 原型:int compare (const char* s) const;
- 说明:比较源字符串与char型字符串s的大小。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str1 ("green apple"); cout<<"int compare (const char* s) const;"<<endl; int result = str1.compare("red apply"); if(result == 0) { cout<<str1<<" 等于 "<<"red apply"<<endl; } else { if(result > 0) { cout<<str1<<" 大于 "<<"red apply"<<endl; } else { cout<<str1<<" 小于 "<<"red apply"<<endl; } } system("pause"); return 0; } =>int compare (const char* s) const; green apple 小于 red apple
- 原型:int compare (size_t pos, size_t len, const char* s) const;
- 说明:比较源字符串以下标为pos处开始的len个字符组成的字符串与char型字符串s的大小。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str1 ("green apple"); cout<<"int compare (size_t pos, size_t len, const char* s) const;"<<endl; int result = str1.compare(6, 5, "apple"); if(result == 0) { cout<<str1.substr(6, 5)<<" 等于 "<<"apple"<<endl; } else { if(result > 0) { cout<<str1.substr(6, 5)<<" 大于 "<<"apple"<<endl; } else { cout<<str1.substr(6, 5)<<" 小于 "<<"apple"<<endl; } } system("pause"); return 0; } =>int compare (size_t pos, size_t len, const char* s) const; apple 等于 apple
- 原型:int compare (size_t pos, size_t len, const char* s, size_t n) const;
- 说明:比较源字符串以下标为pos处开始的len个字符组成的字符串与char型字符串s的前n个字符组成的字符串的大小。
代码示例:
#include <iostream> #include <string> using namespace std; int main() { string str1 ("green apple"); cout<<"int compare (size_t pos, size_t len, const char* s, size_t n) const;"<<endl; int result = str1.compare(6, 5, "apple.", 5); if(result == 0) { cout<<str1.substr(6, 5)<<" 等于 "<<"apple"<<endl; } else { if(result > 0) { cout<<str1.substr(6, 5)<<" 大于 "<<"apple"<<endl; } else { cout<<str1.substr(6, 5)<<" 小于 "<<"apple"<<endl; } } system("pause"); return 0; } =>int compare (size_t pos, size_t len, const char* s, size_t n) const; apple 等于 apple
- std::string::compare 返回值说明:
(1)返回值value = 0,比较的两个字符串相等;
(2)返回值value < 0,比较的两个字符串,前一个字符的值较低;
(3)返回值value > 0,比较的两个字符串,后一个字符的值较低;
参考文献:
[1] 网络资源:
http://www.cplusplus.com/reference/string/string/operators/
http://www.cplusplus.com/reference/string/string/compare/