7.8. Our own version of find
¶
If we are looking for a letter in a string
, we may not want to
start at the beginning of the string. One way to generalize the find
function is to write a version that takes an additional parameter—the
index where we should start looking. Here is an implementation of this
function.
int find (string s, char c, int i) {
while (i<s.length()) {
if (s[i] == c) return i;
i = i + 1;
}
return -1;
}
Instead of invoking this function on a string
, like the first
version of find
, we have to pass the string
as the first
argument. The other arguments are the character we are looking for and
the index where we should start.
In the active code below, we are finding the number of 'e'
characters in
the “Shepard” part of “German Shepard” using our function.
Then we use the built-in find
function to demonstrate how they work differently.
- 13, -1, 8
- Notice how the built-in find function works differently from ours.
- 13, 0, 7
- Remember that when a character isn't found, the function returns -1.
- 13, -1, 0
- Keep in mind that the find function is case sensitive, so "A" is different from "a".
- 14, -1, 9
- Remember that indexing begins at 0 for C++.
Q-2: Given the definition of find provided in the previous active code, what is the correct output of the code below?
int main() {
string quote = "The way to get started is to quit talking and begin doing.";
cout << find(quote, 't', 11) << ", " << find(quote, 't', 42) << ", " << quote.find('t');
}