1 /* 2 * htwg_string_test.cpp 3 * 4 * Beispiel-Anwendung fuer die stark vereinfachte String-Klasse 5 * 6 * Autor: H.Drachenfels 7 * Erstellt am: 6.11.2019 8 */
9
10 #include <iostream>
11 #include "htwg_string.h"
12
13 namespace
14 {
15 htwg::string hallo();
16 }
17
18 int main()
19 {
20 htwg::string s0; // Default-Konstruktor
21 std::cout << s0.length() << '\n'; // gibt 0 aus
22
23 htwg::string s1("Hallo"); // Konstruktor mit Parameter const char*
24 std::size_t len = s1.length();
25 std::cout << len << '\n'; // gibt 5 aus
26
27 htwg::string s2 = s1; // Copy-Konstruktor
28 std::cout << s2.c_str() << '\n'; // gibt Hallo aus
29
30 s2 += s1; // s2.operator+=(s1)
31 std::cout << s2.length() << '\n'; // gibt 10 aus
32 std::cout << s2.c_str() << '\n'; // gibt HalloHallo aus
33 std::cout << std::boolalpha;
34 std::cout << (s1 < s2) << '\n'; // operator<(s1, s2) liefert true
35 std::cout << ("Hallo" < s2) << '\n'; // operator<(s1, s2) liefert true
36 std::cout << (s2 < s1) << '\n'; // operator<(s2, s1) liefert false
37 std::cout << (s2 < "Hallo") << '\n'; // operator<(s2, s1) liefert false
38
39 s2 = s1; // s2.operator=(s1)
40 std::cout << s2.c_str() << '\n'; // gibt Hallo aus
41
42 htwg::string s3 = hallo(); // Move-Konstruktor (i.d.R. wegoptimiert)
43 std::cout << s3.c_str() << '\n'; // gibt Hallo aus
44
45 s3 = hallo(); // Move-Zuweisung
46 std::cout << s3.c_str() << '\n'; // gibt Hallo aus
47 }
48
49 namespace
50 {
51 htwg::string hallo()
52 {
53 return htwg::string{"Hallo"};
54 }
55 }
56