Zeichenketten

Das erste Programm hier braucht eine Variable: sie heißt einfach "name". In die Variable name wird die Zeichenkette, die von der Tastatur eingegeben wird, eingelesen (cin >>).

//strn.cpp
#include <iostream>

using namespace std;

int main()
{
    string name;

    cout << endl << "Bitte geben Sie Ihren Namen ein: ";
    cin >> name;

    cout << "Hallo, " << name << "!!!";
    return 0;  
}

Im fast einfachsten Falle vergleicht man zwei Zeichenketten mit dem Operator ==. Das kleine Programm dazu sieht wie folgt aus:

//strin.cpp
#include <iostream>
using namespace std;

int main()
{
    string a = "Beispielwort";
    string b;
    b = a;//Kopie von a nach b
    cout << b << endl;
    if (a==b)
    cout << "Das erste Wort ist dem zweiten gleich." << endl;
    return 0;  
}


In dem folgenden kleinen Programm gibt es = und == und sogar die Zeile: int j = (a==b);. Das will ich erklären: Das = ist immer eine Zuweisung. Das == aber ist eine Prüfung auf Gleichheit. Das ist ein großer Unterschied! Die Zuweisung kann einen Wert kopieren - die Prüfung auf Gleichheit ist etwas Logisches.

//string.cpp
#include <iostream>

using namespace std;

int main()
{
    string a = "Beispielwort";
    string b;
    cout << endl << a;
    b = a;//Kopie von a nach b
    cout << endl << b;
    int j = (a==b);
    cout << endl << j;//1
    return 0;   
}

int kann hier bool heißen, so dass das Programm auch folgendermaßen funktioniert:

//string2.cpp

#include <iostream>

using namespace std;

int main()
{
    string c = "Beispielwort";
    string d;
    cout << endl << c;
    d = c;//Kopie von c nach d
    cout << endl << d;
    bool j = c==d;
    cout << endl << j;//1
    printf("\nTaste bitte ...");
    cin.get();
    return 0;   
}


Zeichenketten und der Plus-Operator

//strplus.cpp
#include <iostream>//cout, cin

using namespace std;

int main()
{
    string a;
    string b;
    cout << "Bitte ein erstes Wort eingeben: ";
    cin >> a;
    cout << "Bitte ein zweites Wort eingeben: ";
    cin >> b;
    string c = a + ' ' + b;//Zusammenfuegen mit +
    cout << endl << c;
    cout << endl;
    system("pause");
    return 0;
}


Zeichenketten finden

Das Suchen ganzer Wörter geschieht wie hier im Video gezeigt:


Operationen mit Zeichenketten

//str.cpp
#include <iostream>

#include <string>
using namespace std;
int main()
{
    string irgendwas = "Irgendetwas";
    string i2 = irgendwas;
    cout << "Wortlaenge: " << irgendwas.size() << endl;
    cout << "Ist das Wort sozusagen leer? " << irgendwas.empty() << endl;
    cout << "Angehaengt: " << irgendwas.append(" hinterher.") << endl;
    cout << irgendwas << endl;
    if (irgendwas == i2)
        cout << "Sie sind noch gleich" << endl;
    return 0;
}

Die besten und wichtigsten Operationen folgen nun:

//str2.cpp
#include <iostream>

#include <string>
using namespace std;
int main()
{
    string ganzerSatz = "My little small tiny cute notebook is here.";
    cout << ganzerSatz << endl;//My little small tiny cute notebook is here.
   
    int index = ganzerSatz.find("notebook", 0);
    cout << index << endl;//26
   
    ganzerSatz.replace(index, 8, "laptop");
    cout << ganzerSatz << endl;//My little small tiny cute laptop is here.
    int index2 = ganzerSatz.find("laptop", 0);
    cout << index2 << endl;//26
   
    ganzerSatz.erase(index, 7);
    cout << ganzerSatz << endl;//My little small tiny cute is here.
    index2 = ganzerSatz.find("laptop", 0);
    cout << index2 << endl;//-1
   
    ganzerSatz.insert(26, "notebook ");
    cout << ganzerSatz << endl;//My little small tiny cute notebook is here.
    return 0;
}


Mehrere Worte einlesen

Mit "getline.cin(...)" kann man mehrere Worte - mit Leertaste dazwischen - einlesen.

//strtest.cpp
#include <iostream>//cout, cin

using namespace std;

int main()
{
    //string str;
    //cin >> str;
    //cout << endl << str;//gibt das erste Wort aus!!!
    //cout << endl;
  
    string stri;
    getline(cin, stri);
    cout << endl << stri;//gibt auch mehrere Worte aus.
    cout << endl << "Taste druecken";
    cin.get();
    return 0;   
}