7.3. Extracting characters from a string¶
Strings are called “strings” because they are made up of a sequence, or
string, of characters. The first operation we are going to perform on a
string is to extract one of the characters. C++ uses square brackets
([
and ]
) for this operation.
Take a look at the active code below. We extract the character
at index 1 from string fruit
using [
and ]
.
The expression fruit[1]
indicates that I want character number 1
from the string named fruit
. The result is stored in a char
named letter
. When I output the value of letter
, I get a
surprise:
a
a
is not the first letter of "banana"
. Unless you are a computer
scientist. For perverse reasons, computer scientists always start
counting from zero. The 0th letter (“zeroeth”) of "banana"
is b
.
The 1th letter (“oneth”) is a
and the 2th (“twoeth”) letter is
n
.
Note
In C++, indexing begins at 0!
If you want the the zereoth letter of a string, you have to put zero in the square brackets.
The active code below accesses the first character in string fruit
.
- 1
- Don't forget that computer scientists do not start counting at 1!
- 0
- Yes, this would access the letter "b".
- 2
- This would access the letter "k".
Q-3: What would replace the “?” in order to access the letter “b” in the string below?
1#include <iostream>
2using namespace std;
3
4int main () {
5 string bake = "bake a cake!";
6 char letter = bake[?];
7}
- lunch
- When we
cout
astring
we print its content not its name. - jello
- Carefully check which string(s) we are indexing into.
- lello
- Correct! We copy the 'l' from position 3 of "hello" to position 0.
- heljo
- Consider which string(s) we are indexing into.
Q-4: What is printed when the code below is run?
1#include <iostream>
2using namespace std;
3
4int main () {
5 string lunch = "hello";
6 string person = "deejay";
7 lunch[0] = lunch[3];
8 cout << lunch;
9}
def main() { string fruit = "apple"; char letter = fruit[2]; cout << fruit << endl; cout << fruit[4] << endl; }
Construct a block of code that correctly prints the letter “a”.