# 5. String

### String

In het eerste hoofdstuk heb je het datatype string al eerder gezien. In dit hoofdstuk ga je nog meer leren over strings. Variabelen van het type string bevatten stukken tekst. Er worden aanhalingstekens `" "` gebruikt om het begin en einde van een stuk tekst aan te geven. \
\
Een voorbeeld:

```cpp
#include <iostream>
using namespace std;

int main(){
  string zin = "Programmeren is leuk";
  cout << zin << endl;
  cout << "Het aantal letters in de zin is: " << zin.length();
  return 0;
}
```

Je kan een string zien als een rij met letters of karakters:

<figure><img src="https://155810540-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fag1wUPh8M2n58lYXKcOY%2Fuploads%2FChbsUWHsAHPcjmxMowF5%2Farray%20of%20char%20zonder%200.png?alt=media&#x26;token=f96b3f2f-adc7-46ac-aaf0-b6c6a469e969" alt=""><figcaption></figcaption></figure>

De string start bij index 0. Je kan een specifieke letter in een string opvragen met de vierkante haken \[ ].&#x20;

De eerste letter uit de zin kan je selecteren met:\
`cout << zin[0];`

De tweede letter kan je selecteren met:\
`cout << zin[1]`

Een manier om letter voor letter de string te doorlopen is:

```cpp
string zin = "Voorbeeld";
for (int i = 0; i < zin.length(); i++) {
    cout << zin[i] << endl;
}
```

**Opdracht 5.1**\
Schrijf een programma dat een zin inleest en als uitvoer de zin achterstevoren afdrukt.\
Bijvoorbeeld:\
Invoer: aardbei\
Uitvoer: iebdraa

Een andere manier om letter voor letter de string te doorlopen is:

```cpp
string zin = "Voorbeeld";
for (char element : zin){
     cout << element << endl;
}
```

**Opdracht 5.2**\
Maak de opdracht [Moeren en Bouten](https://informatica.cuttle.org/?action=question_standalone\&que_id=201\&t=14b88acbaa336358).

Met de operator + kan je 2 of meerdere strings samenvoegen. Bijvoorbeeld:\
`voornaam = "Noor";`\
`achternaam = "Vis";`\
`volledigenaam = voornaam + " " + achternaam`

**Opdracht 5.3**\
Probeer onderstaande code uit. Kun je het verschil verklaren?

```cpp
#include <string>
#include <iostream>
using namespace std;

int main(){
  string string1 = "10";
  string string2 = "10";
  cout << string1 + string2 << endl;
  int int1 = 10;
  int int2 = 10;
  cout << int1 + int2 << endl;
  return 0;
}
```

{% hint style="info" %}
Het commando `cin` leest alles in wat de gebruiker typt tot de spatie. Met strings wil je soms ook de spatie inlezen, dit kan met de code:\
`getline (cin,`` `_`variabele_naam`_`);`
{% endhint %}

### Char

Char is het datatype voor een enkel teken. Dit teken staat tussen enkele aanhalingstekens ' '. Bijvoorbeeld: `char letter= 'A';`

Elk teken kan vertaald worden naar een getal, hieronder de decimale waardes van ons alfabet:

![](https://155810540-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fag1wUPh8M2n58lYXKcOY%2Fuploads%2FnDBcLPF3nt6jLMe2mL5D%2Fimage.png?alt=media\&token=62d2e428-c8da-4c78-a308-e1be3361ee7f)

Van deze standaard codering kunnen we gebruik van maken in C++.\
Hieronder een aantal voorbeelden:\
`int nummer = 'a';` -> nummer krijgt hier de waarde 97.\
`char letter = 115;` -> letter krijgt hier de waarde 's'.\
`char letter = 'a' + 2;` -> letter krijgt hier de waarde 'c'.

**Opdracht 5.4**\
Je hebt een geheim bericht ontvangen van een vriendin. \
`string bericht = "Ln#ndq#surjudpphuhq#lq#F..";`\
Gelukkig hebben jullie van te voren afgesproken hoe jullie het bericht gingen versleutelen. Je vriendin heeft alle letters 3 posities in de unicode-tabel opgeschoven. Dus de a is een d geworden, de b een e, de c een f etc.\
Schrijf een programma dat dit bericht terug vertaald naar het originele bericht.&#x20;

**Opdracht 5.5**\
Maak de opdracht [unieke letters inleveren](https://informatica.cuttle.org/?action=question_standalone\&que_id=40\&t=52d391ad7885cf27).

**Opdracht 5.6**\
Maak de opdracht [Naaimachine](https://informatica.cuttle.org/?action=question_standalone\&que_id=202\&t=f96b8f7a1c751886).\
