7.4. Length¶
To find the length of a string (number of characters), we can use the
length
function. The syntax for calling this function is a little
different from what we’ve seen before.
The active code below outputs the length of string fruit
.
To describe this function call, we would say that we are invoking
the length function on the string named fruit
. This vocabulary may
seem strange, but we will see many more examples where we invoke a
function on an object. The syntax for function invocation is called “dot
notation,” because the dot (period) separates the name of the object,
fruit
, from the name of the function, length
.
length
takes no arguments, as indicated by the empty parentheses
()
. The return value is an integer, in this case 6. Notice that it
is legal to have a variable with the same name as a function.
To find the last letter of a string, you might be tempted to try something like
size_t length = fruit.length();
char last = fruit[length]; // WRONG!!
That won’t work. The reason is that there is no 6th letter in
"banana"
. Since we started counting at 0, the 6 letters are numbered
from 0 to 5. To get the last character, you have to subtract 1 from
length
.
Warning
A common source of error involving strings and other arrays is indexing
out of bounds. This is usually the result of forgetting to subtract 1 from
length
.
The active code below outputs the last character in string fruit
using the length
function.
- 11
- The space counts as a character.
- 12
- Yes, there are 12 characters in the string.
Q-3: What is printed by the following statements?
string s = "coding rocks";
cout << s.length() << endl;
- o
- Take a look at the index calculation again, s.length()-5.
- r
- Yes, s.length() is 12 and 12-5 is 7. Use 7 as index and remember to start counting with 0.
- s
- s is at index 11.
- Error, s.length() is 12 and there is no index 12.
- You subtract 5 before using the index operator so it will work.
Q-4: What is printed by the following statements?
string s = "coding rocks";
cout << (s[s.length()-5]) << endl;
Construct a block of code that correctly implements the accumulator pattern, with course
being the first variable initialized.