apstring类还提供了其他几个可以在字符串上调用的函数。find函数的意义看起来与[]操作符相反。不同于接收索引值然后提取索引值对应的字符,find函数接收一个字符然后找到字符相应的索引。
apstring fruit = "banana";
int index = fruit.find(’a’);
上面例子的功能是找出字符串中字母‘a’的索引。在这个例子中,字母‘a’出现了三次,所以find该如何处理并不是显而易见的。根据文档,它返回第一次出现处的索引,所以结果是1。如果字符串中不存在给定字母,find函数返回-1。
此外,find还有一个版本,它接收另一个apstring作为参数,找到参数表示的子串在原字符串中出现位置的索引。例如:
apstring fruit = "banana";
int index = fruit.find("nan");
这个例子的返回值为2。
读者应该还记得,在5.4节中我们提到过可以存在多个同名函数,只要它们的参数数目或类型不同。这个例子中,C++可以根据提供参数的类型确定调用find的哪个版本。