当前位置:嗨网首页>书籍在线阅读

17-比较string类字符串

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.1.15 比较string类字符串

如果使用string类字符串而不是C-风格字符串,比较起来将简单些,因为类设计让您能够使用关系运算符进行比较。这之所以可行,是因为类函数重载(重新定义)了这些运算符。第12章将介绍如何将这种特性加入到类设计中,但从应用的角度说,读者现在只需知道可以将关系运算符用于string对象即可。程序清单5.12是在程序清单5.11的基础上修改而成的,它使用的是string对象而不是char数组。

程序清单5.12 compstr2.cpp

// compstr2.cpp -- comparing strings using arrays
#include <iostream>
#include <string> // string class
int main()
{
    using namespace std;
    string word = "?ate";
    for (char ch = ‘a’; word != "mate"; ch++)
    {
        cout << word << endl;
        word[0] = ch;
    }
    cout << "After loop ends, word is " << word << endl;
    return 0;
}

该程序的输出与程序清单5.11相同。

程序说明

在程序清单5.12中,下面的测试条件使用了一个关系运算符,该运算符的左边是一个string对象,右边是一个C-风格字符串:

word != "mate"

string类重载运算符!=的方式让您能够在下述条件下使用它:至少有一个操作数为string对象,另一个操作数可以是string对象,也可以是C-风格字符串。

string类的设计让您能够将string对象作为一个实体(在关系型测试表达式中),也可以将其作为一个聚合对象,从而使用数组表示法来提取其中的字符。

正如您看到的,使用C-风格字符串和string对象可获得相同的结果,但使用string对象更简单、更直观。

最后,和前面大多数for循环不同,此循环不是计数循环。也就是说,它并不对语句块执行指定的次数。相反,此循环将根据情况(word为“mate”)来确定是否停止。对于这种测试,C++程序通常使用while循环,下面来看看这种循环。