Insättning av text

En vanlig operation då man hanterar strängar är att lägga till text i en sträng. De två möjligheterna här är att text läggs till på slutet av strängen eller någonstans mitt i.

Vi tittar först på hur text kan läggas till på slutet av en sträng. Man kan göra detta med metoden append() eller med operatorn +=. Båda ändrar strängen och lägger till den givna texten eller tecknet till slutet av strängen. Ett exempel på en funktion som konkatenerar två strängar med ett tomrum emellan:

string fulltNamn (const string & Fornamn, const string & Efternamn) {
  string Namn = Fornamn;
  Namn += ' ';
  Namn += Efternamn;

  // ge tillbaka det fullständiga namnet
  return Namn;
}

Här används operatorn += för konkateneringen, men append() kunde lika väl ha använts. Vi kan konkatenera instanser av string, C-strängar och vanliga tecken (char).

Att lägga till text på annan plats i en sträng än på slutet görs med metoden insert(). Även denna finns i diverse olika varianter. Man kan sätta in var som helst i en sträng instanser av string, C-strängar, tecken, substrängar samt ett antal av samma tecken eller C-sträng. Ett exempel:

#include <iostream>
#include <string>

int main () {
  string Namn = "Frodo Bagger";

  // lägg till initialen för mellannamnet
  string Initial = "T. ";
  Namn.insert ( 6, Initial );

  // sätt in i början av strängen
  Namn.insert ( 0, "Mr. " );

  cout << "Namnet är: " << Namn << endl;
}

Körning av programmet ovan ger:

% ./StringInsert
Namnet är: Mr. Frodo T. Bagger
%

Addera strängar

Man kan förutom att direkt konkatenera och sätta in text i strängar även addera dem med hjälp av operatorn +. De strängar som används i additionen påverkas inte på något sätt. Ett exempel belyser hur detta fungerar:

#include <iostream>
#include <string>

string fulltNamn (const string & Fornamn, const string & Efternamn) {

  // ge tillbaka det fullständiga namnet
  return Fornamn + " " + Efternamn;
}

int main () {
  string Namn = fulltNamn ( "Frodo", "Bagger" );
  string Text = "Fullständigt namn: " + Namn;
  
  cout << Text << endl;
}

Vi kan alltså addera ihop flera olika strängar och stränkonstanter med operatorn + och sedan tilldela strängen till en annan variabel. Denna funktionalitet är praktisk då man t.ex. vill skapa olika meddelanden som skall visas åt användaren.