Skip to main content

How To Think Like a Computer Scientist C++ Edition The Pretext Interactive Version

Section 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.
Listing 7.4.1. This active code 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
int 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 7.4.1.

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.
Listing 7.4.2. This active code outputs the last character in string fruit using the length function.

Checkpoint 7.4.1.

What is printed by the following statements?
string s = "coding rocks";
cout << s.length() << endl;
  • 11
  • The space counts as a character.
  • 12
  • Yes, there are 12 characters in the string.

Checkpoint 7.4.2.

What is printed by the following statements?
string s = "coding rocks";
cout << (s[s.length()-5]) << endl;
  • Take a look at the index calculation again, s.length()-5.
  • Yes, s.length() is 12 and 12-5 is 7. Use 7 as index and remember to start counting with 0.
  • 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.

Checkpoint 7.4.3.

Construct a block of code that correctly implements the accumulator pattern, with course being the first variable initialized.
You have attempted 1 of 5 activities on this page.