Nicht aus der Schweiz? Besuchen Sie lehmanns.de
C++ Kochbuch - D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell

C++ Kochbuch

Buch | Softcover
624 Seiten
2006
O'Reilly (Verlag)
978-3-89721-447-7 (ISBN)
CHF 62,85 inkl. MwSt
  • Titel ist leider vergriffen;
    keine Neuauflage
  • Artikel merken
Manche Programmieraufgaben sind richtig spannend und verlangen Ihre volle Kreativität und all Ihren Einfallsreichtum. Aber viele Probleme sind einfach Programmierroutine, schon 1000 Mal aufgetreten – und zum Glück schon 1000 mal gelöst. Das "C++ Kochbuch" ist eine Schatztruhe voll intelligenter Lösungen für solche Standardaufgaben. Von der Stringmanipulation über das Parsen von XML-Dokumenten bis zur Ausnahmebehandlung finden Sie hier mehr als 100 Rezepte für effizienten Code. Das Buch bietet aber mehr als Copy-und-Paste-Bausteine: Jede Lösung wird gründlich erläutert und erklärt und ist so leicht an die individuellen Bedürfnisse anzupassen.

Aus dem Inhalt:

* Die Arbeit mit Zahlen
* Datums- und Zeitangaben
* Stream-basierte Ein- und Ausgabe
* Ausnahmebehandlung
* Mit Klassen und Objekten arbeiten
* XML parsen
* Mit make Anwendungen bauen
* String- und Textmanipulationen
* Multithreading
* Algorithmen und Container aus der Standardbibliothek
* Mathematische Programmierung
* Internationalisierung

Inhaltsverzeichnis






Vorwort XI

1 C++-Programme kompilieren 1

1.1GCC beschaffen und installieren 16
1.2Ein einfaches »Hallo Welt«-Programm von der Kommandozeile aus kompilieren 19
1.3Eine statische Bibliothek von der Kommandozeile aus kompilieren 26
1.4Eine dynamische Bibliothek von der Kommandozeile aus kompilieren 27
1.5Eine komplexe Anwendung von der Kommandozeile aus kompilieren 36
1.6Boost.Build installieren 42
1.7Ein einfaches »Hallo Welt«-Programm mit Boost.Build kompilieren 44
1.8Eine statische Bibliothek mit Boost.Build kompilieren 48
1.9Eine dynamische Bibliothek mit Boost.Build kompilieren 50
1.10Ein komplexes Programm mit Boost.Build kompilieren 51
1.11Eine statische Bibliothek mit einer IDE kompilieren 55
1.12Eine dynamische Bibliothek mit einer IDE kompilieren 59
1.13Ein komplexes Programm mit einer IDE kompilieren 63
1.14GNU make beschaffen 69
1.15Ein einfaches »Hallo Welt«-Programm mit GNU make kompilieren 72
1.16Eine statische Bibliothek mit GNU make kompilieren 80
1.17Eine dynamische Bibliothek mit GNU make kompilieren 85
1.18Ein komplexes Programm mit GNU make kompilieren 87
1.19Ein Makro definieren 92
1.20Einen Kommandozeilen-Parameter in einer IDE angeben 94
1.21Einen Debug Build erstellen 95
1.22Einen Release Build erstellen 99
1.23Eine Version der Laufzeitbibliothek auswählen 102
1.24Die strikte Einhaltung des C++-Standards erzwingen 106
1.25Eine Quelldatei automatisch gegen eine bestimmte Bibliothek linken lassen 110
1.26Exportierte Templates verwenden 112

2 Code organisieren 117

2.1Headerdateien nur einmal einbinden 119
2.2Eine Instanz einer Variablen über mehrere Quelldateien hinweg verwenden 121
2.3Die Zahl der #includes mit Hilfe vorgezogener Klassendeklarationen reduzieren 123
2.4Namenskollisionen mit Hilfe von Namensräumen verhindern 125
2.5Eine Inline-Datei einbinden 132

3 Zahlen 133

3.1Einen String in einen numerischen Typ umwandeln 134
3.2Zahlen in Strings umwandeln 136
3.3Herausfinden, ob ein String eine gültige Zahl enthält 140
3.4Fließkommazahlen innerhalb einer beschränktenGenauigkeit vergleichen 143
3.5Einen String mit einer Zahl in wissenschaftlicher Notation parsen 145
3.6Zahlen zwischen verschiedenen numerischen Typen konvertieren 147
3.7Den größten und den kleinsten möglichen Werteines numerischen Typs bestimmen 150

4 Strings und Text 153

4.1Einen String mit Füllzeichen auffüllen 154
4.2Einen String trimmen 156
4.3Strings als Sequenz ablegen 162
4.4Die Länge eines Strings ermitteln 166
4.5Einen String umkehren 169
4.6Einen String in Teilstrings aufspalten 170
4.7Einen String in Tokens zerlegen 173
4.8Eine Sequenz von Strings zu einem String vereinen 176
4.9Suchen in Strings 178
4.10Das n-te Vorkommen eines Teilstrings ermitteln 182
4.11Einen Teilstring aus einem String entfernen 183
4.12Alle Zeichen eines Strings in Klein- oder Großbuchstaben umwandeln 185
4.13String-Vergleiche ohne Beachtung von Groß- und Kleinschreibung 188
4.14Einen String ohne Beachtung von Groß- und Kleinschreibung durchsuchen 191
4.15Tabulatoren und Leerzeichen in einer Textdateiineinander konvertieren 193
4.16Zeilen in einer Textdatei umbrechen 196
4.17Die Anzahl der Zeichen, Wörter und Zeilen in einer Textdatei ermitteln 198
4.18Die Häufigkeit jedes in einer Textdatei vorkommenden Wortes zählen 201
4.19Eine Textdatei mit Rändern versehen 204
4.20Eine Textdatei links- oder rechtsbündig formatieren 207
4.21Whitespace in Textdateien durch einzelne Leerzeichen ersetzen 210
4.22Tippfehler in einem sich ändernden Text automatisch korrigieren 211
4.23Eine Textdatei mit kommaseparierten Einträgen einlesen 214
4.24Einen String mit Hilfe regulärer Ausdrücke in Tokens zerlegen 217

5 Datumswerte und Uhrzeiten 219

5.1Das aktuelle Datum und die Uhrzeit ermitteln 220
5.2Datum und Uhrzeit als String formatieren 222
5.3Mit Datums- und Uhrzeitwerten rechnen 225
5.4Zwischen Zeitzonen konvertieren 227
5.5Die Tagesnummer in einem bestimmten Jahr ermitteln 228
5.6Typen mit begrenztem Wertebereich definieren 230

6 Daten mit Containern verwalten 235

6.1Vektoren statt Arrays verwenden 236
6.2Vektoren effizient einsetzen 240
6.3Einen Vektor kopieren 245
6.4Zeiger in einem Vektor speichern 247
6.5Objekte in einer Liste speichern 249
6.6String auf andere Dinge abbilden 254
6.7Gehashte Container nutzen 260
6.8Objekte sortiert abspeichern 265
6.9Container in Containern speichern 269

7 Algorithmen272

7.1Über einen Container iterieren 273
7.2Objekte aus einem Container entfernen 280
7.3Daten zufällig mischen 283
7.4Bereiche vergleichen 285
7.5Daten verschmelzen 289
7.6Einen Bereich sortieren 292
7.7Einen Bereich aufteilen 295
7.8Mengenoperationen mit Sequenzen ausführen 297
7.9Elemente in einer Sequenz transformieren 301
7.10Schreiben Sie Ihren eigenen Algorithmus 303
7.11Einen Bereich in einen Stream ausgeben 306

8 Klassen310

8.1Datenelemente einer Klasse initialisieren 311
8.2Objekte mit einer Funktion erstellen (Fabrikmuster) 314
8.3Mit Konstruktoren und Destruktoren Ressourcen verwalten (RAII) 316
8.4Einem Container automatisch neue Klasseninstanzen hinzufügen 319
8.5Sicherstellen, dass nur eine einzelne Version eines Datenelements existiert 321
8.6Den Typ eines Objekts zur Laufzeit ermitteln 323
8.7Bestimmen, ob die Klasse eines Objekts eineUnterklasse eines anderen Objekts ist 325
8.8Jeder Instanz einer Klasse eine eindeutige Identifizierung geben 326
8.9Eine Singleton-Klasse erstellen 329
8.10Eine Schnittstelle mit einer abstrakten Basisklasse erstellen 331
8.11Ein Klassen-Template schreiben 336
8.12Ein Elementfunktions-Template schreiben 341
8.13Die Inkrement- und Dekrementoperatoren überladen 344
8.14Arithmetische und Zuweisungsoperatoren für einintuitives Verhalten einer Klasse überladen 347
8.15Eine virtuelle Funktion der Superklasse aufrufen 354

9 Ausnahmen und Sicherheit356

9.1Eine Ausnahmeklasse erstellen 356
9.2Einen Konstruktor ausnahmefest machen 361
9.3Eine Initialisierungsliste ausnahmefest machen 364
9.4Elementfunktionen ausnahmefest machen 368
9.5Ein Objekt sicher kopieren 373

10 Streams und Dateien378

10.1Text bei der Ausgabe ausrichten 379
10.2Gleitkommawerte formatieren 383
10.3Schreiben Sie Ihre eigenen Stream-Manipulatoren 386
10.4Eine Klasse in einen Stream schreiben können 391
10.5Eine Klasse aus einem Stream lesen können 394
10.6Informationen über eine Datei erhalten 396
10.7Eine Datei kopieren 398
10.8Eine Datei löschen oder umbenennen 402
10.9Temporäre Dateinamen und Dateien erstellen 404
10.10Ein Verzeichnis erstellen 406
10.11Ein Verzeichnis löschen 408
10.12Den Inhalt eines Verzeichnisses lesen 411
10.13Die Dateierweiterung aus einem String extrahieren 413
10.14Einen Dateinamen aus einem kompletten Pfad extrahieren 415
10.15Den Pfad aus einem vollständigen Pfad mit Dateinamen ermitteln 416
10.16Eine Dateierweiterung ersetzen 418
10.17Zwei Pfade in einem einzelnen Pfad zusammenführen 419

11 Wissenschaft und Mathematik 423

11.1Die Anzahl der Elemente in einem Container ermitteln 424
11.2Den größten oder kleinsten Wert in einem Container finden 425
11.3Die Summe und den Durchschnitt der Elemente ineinem Container berechnen 429
11.4Werte außerhalb eines bestimmten Bereichs ausfiltern 431
11.5Varianz, Standardabweichung und anderestatistische Funktionen berechnen 433
11.6Zufallszahlen erzeugen 436
11.7Einen Container mit Zufallszahlen initialisieren 438
11.8Einen numerischen Vektor mit dynamischer Größe darstellen 440
11.9Einen numerischen Vektor mit fester Größe darstellen 441
11.10Ein Skalarprodukt berechnen 445
11.11Die Norm eines Vektors berechnen 446
11.12Den Abstand zwischen zwei Vektoren berechnen 447
11.13Einen Stride-Iterator implementieren 449
11.14Eine Matrix mit dynamischer Größe implementieren 452
11.15Eine Matrix mit konstanter Größe implementieren 456
11.16Matrizen multiplizieren 459
11.17Die Fast-Fourier-Transformation berechnen 461
11.18Mit Polar-Koordinaten arbeiten 463
11.19Berechnungen mit Bitsets durchführen 465
11.20Große Integer-Werte mit fester Länge darstellen 469
11.21Zahlen mit festen Nachkommastellen implementieren 473

12 Multithreading476

12.1Einen Thread erstellen 477
12.2Eine Ressource thread-sicher machen 481
12.3Einen Thread von einem anderen aus benachrichtigen 489
12.4Gemeinsam genutzte Ressourcen einmal initialisieren 493
12.5Einer Thread-Funktion ein Argument übergeben 494

13 Internationalisierung 497

13.1Einen Unicode-String im Quelltext eingeben 498
13.2Zahlen lesen und schreiben 499
13.3Datumswerte und Uhrzeiten lesen und schreiben 503
13.4Währungsbeträge lesen und schreiben 509
13.5Lokalisierte Strings sortieren 514

14 XML516

14.1Ein einfaches XML-Dokument parsen 517
14.2Mit Xerces-Strings arbeiten 526
14.3Ein komplexes XML-Dokument parsen 529
14.4Ein XML-Dokument verändern 540
14.5Ein XML-Dokument gegen eine DTD validieren 545
14.6Ein XML-Dokument gegen ein Schema validieren 549
14.7Ein XML-Dokument mit XSLT umwandeln 553
14.8Einen XPath-Ausdruck auswerten 559
14.9Eine Collection von Objekten mit XML speichern und laden 566

15 Verschiedenes572

15.1Funktionszeiger für Callbacks nutzen 572
15.2Zeiger auf Elemente einer Klasse nutzen 574
15.3Sicherstellen, dass eine Funktion ein Argument nicht verändert 577
15.4Sicherstellen, dass eine Elementfunktion ihr Objekt nicht verändert 580
15.5Einen Operator schreiben, der keine Elementfunktion ist 582
15.6Eine Sequenz mit kommaseparierten Werten initialisieren 584

Index 587


Sprache deutsch
Gewicht 1140 g
Einbandart Paperback
Themenwelt Informatik Programmiersprachen / -werkzeuge C / C++
Schlagworte C++, programmieren, Programmierung, Softwareentwicklung, Beispiele • C++ (Programmiersprache)
ISBN-10 3-89721-447-4 / 3897214474
ISBN-13 978-3-89721-447-7 / 9783897214477
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich