设为首页 加入收藏

TOP

8.11.4 比较字符串(1)
2013-10-07 16:09:39 来源: 作者: 【 】 浏览:81
Tags:8.11.4 比较 字符串

8.11.4  比较字符串(1)

我们有一整套比较运算符,用来比较两个字符串对象,或者比较一个字符串对象与一个字符串字面值。string类中对下列运算符实现了运算符重载:

  1. == != < <> >

下面是使用这些运算符的示例:

  1. string dog1("St Bernard");  
  2. string dog2("Tibetan Mastiff");  
  3. if(dog1 < dog2)  
  4. cout << "dog2 comes first!" << endl;  
  5. else if(dog1 > dog2)  
  6. cout << "dog1 comes first!" << endl;  

当比较两个字符串时,实际上是比较对应的字符,直到发现一对不同的字符,或者到达一个或两个字符串的末尾。当发现两个对应字符不相同时,字符代码的值决定比较结果。如果没有发现不同的字符对,那么字符较少的字符串小于另一个字符串。如果两个字符串包含相同的字符个数,而且对应的字符也相同,则这两个字符串相等。

试一试:比较字符串

本例说明了如何用极其低效的排序方法来使用比较运算符。代码如下:

  1. // Ex8_14.cpp  
  2. // Comparing and sorting words  
  3. #include <iostream> 
  4. #include <iomanip> 
  5. #include <string> 
  6. using std::cin;  
  7. using std::cout;  
  8. using std::endl;  
  9. using std::ios;  
  10. using std::setiosflags;  
  11. using std::setw;  
  12. using std::string;  
  13. string* sort(string* strings, size_t count)  
  14. {  
  15. bool swapped(false);  
  16. while(true)  
  17. {  
  18. for(size_t i = 0 ; i < count-1 ; i++)  
  19. {  
  20. if(strings[i] > strings[i+1])  
  21. {  
  22. swapped = true;  
  23. strings[i].swap(strings[i+1]);  
  24. }  
  25. }  
  26. if(!swapped)  
  27. break;  
  28. swapped = false;  
  29. }  
  30. return strings;  
  31. }  
  32. int main()  
  33. {  
  34. const size_t maxstrings(100);  
  35. string strings[maxstrings];  
  36. size_t nstrings(0);  
  37. size_t maxwidth(0);  
  38. // Read up to 100 words into the strings array  
  39. while(nstrings < maxstrings)  
  40. {  
  41. cout << "Enter a word or press Enter to end: ";  
  42. getline(cin, strings[nstrings]);  
  43. if(maxwidth < strings[nstrings].length())  
  44. maxwidth = strings[nstrings].length();  
  45. if(strings[nstrings].empty())  
  46. break;  
  47. ++nstrings;  
  48. }  
  49. // Sort the input in ascending sequence  
  50. sort(strings,nstrings);  
  51. cout << endl 
  52. << "In ascending sequence, the words you entered are:"  
  53. << endl 
  54. << setiosflags(ios::left); // Left-justify the output  
  55. for(size_t i = 0 ; i < nstrings ; i++)  
  56. {  
  57. if(i % 5 == 0)  
  58. cout << endl;  
  59. cout << setw(maxwidth+2) << strings[i];  
  60. }  
  61. cout << endl;  
  62. return 0;  
  63. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.11.3 访问与修改字符串(3) 下一篇8.11.4 比较字符串(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)