Typnamen der Standardbibliothek in C++ [] (Typnamen der Standardbibliothek in C++), Lektion, page 722673
https://www.purl.org/stefan_ram/pub/typnamen_c++ (permalink) is the canonical URI of this page.
Stefan Ram
C++-Kurs

Statische Einträge von Klassen

Wenn eine Information für alle Exemplarer einer Klasse gleich ist, dann braucht sie nicht mit jedem Exemplar verbunden werden, sondern nur einmal in der Klasse abgelegt zu werden. Solche Einträge einer Klasse werden auch als „statische“ Einträge der Klasse bezeichnet. Es gibt unter anderem statische Einträge für Typen und für Werte.

Typnamen

»::std::string::size_type« ist ein numerischer Typ, der in vielen Fällen wie der Typ »int« verwendet werden kann. Es ist nur Vorsicht geboten, falls er in Zusammenhang mit negativen Werten verwendet wird. »const« nach der eingeklammerten Parameterliste bedeutet, daß die Ausführung dieser Elementfunktion den Text nicht verändert.

Die Klasse »::std::string« definiert einige Namen für Typen: »::std::string::value_type« ist der Typ eines einzelnen Zeichens (eines Ausdrucks der Klasse »::std::string«), und »::std::string::size_type« ist der Typ der Anzahl der Zeichen (eines Ausdrucks der Klasse »::std::string«) (dies ist also ein numerischer Typ).

Dokumentation nach n3797, 21.4

namespace std

{ class string

{ typedef … value_type;

typedef … size_type; }}

Das folgende Programm zeigt, wie die Länge einer Zeichenfolge angegeben werden kann. Dabei ist es egal, ob die Elementfunktion »size()« oder die Elementfunktion »length()« verwendet wird.

main.cpp

#include <iostream> /* ::std::cout */
#include <ostream> /* << */
#include <string> /* ::std::string */

int main()
{ ::std::string s{ "alpha" };
::std::cout << s.size() << "\n";
::std::cout << s.length() << "\n";

::std::string::value_type ch = s.at( 1 );

::std::string::size_type zz = s.size();

int zi = zz;

::std::cout << ch << "\n";
::std::cout << zz << "\n";
::std::cout << zi << "\n"; }

::std::cout
5
5
nach n3797, 21.4.4 (vereinfacht)
::std::string::size_type size() const;
Ergibt: Anzahl der char-Objekte der Zeichenfolge.
::std::string::size_type length() const;
Ergibt: size().

Fundamentale Werte

::std::string::npos

beta.find( 'x' )

Übungsaufgaben

Beispielaufgabe: Schreiben Sie eine Anweisung, welche das ::std::string-Exemplar »s« ausgibt.

Beispiellösung: ::std::cout << s;

Für die folgenden Aufgaben soll die Include-Direktive »#include <algorithm>« möglichst noch nicht verwendet werden, da diese erst später vorgestellt werden wird. Statt dessen sollen die bis hier schon im Kurs vorgestellten Möglichkeiten bevorzugt verwendet werden.

Übungsaufgabe

Schreiben Sie eine möglichst kurze bool-Funktion »is_vowel«, welche genau dann »true« zurückgibt, wenn das Schriftzeichen in ihrem char-Argument ein kleiner Vokalbuchstabe (eines der Zeichen »a«, »e«, »i«, »o« oder »u«) ist.

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

...

int main()
{ ::std::cout <<
is_vowel( 'a' )&&
!is_vowel( 'b' )&&
!is_vowel( 'c' )&&
!is_vowel( 'd' )&&
!is_vowel( 'e' )&&
!is_vowel( 'f' )&&
!is_vowel( 'g' )&&
!is_vowel( 'h' )&&
is_vowel( 'i' )&&
!is_vowel( 'j' )&&
!is_vowel( 'k' )&&
!is_vowel( 'l' )&&
!is_vowel( 'm' )&&
!is_vowel( 'n' )&&
is_vowel( 'o' )&&
!is_vowel( 'p' )&&
!is_vowel( 'q' )&&
!is_vowel( 'r' )&&
!is_vowel( 's' )&&
!is_vowel( 't' )&&
is_vowel( 'u' )&&
!is_vowel( 'v' )&&
!is_vowel( 'w' )&&
!is_vowel( 'x' )&&
!is_vowel( 'y' )&&
!is_vowel( 'z' )
<< '\n'; }

Übungsaufgabe

Schreiben Sie eine Anweisung, welche die einzelnen Schriftzeichen des ::std::string-Exemplars »s« (»s« ist hier ein Variablenname) in umgekehrter Reihenfolge ausgibt.

Übungsaufgabe

Schreiben Sie eine Anweisung, welche das erste und das letzte Wort des ::std::string-Exemplars »s« (»s« ist hier ein Variablenname) ausgibt. (Falls der Text kein Wort enthält, soll auch nichts ausgegeben werden.)

Übungsaufgabe

Schreiben Sie eine Anweisung, welche ausgibt, wie oft das Zeichen »a« in dem ::std::string-Exemplar »s« (»s« ist hier ein Variablenname) vorkommt.

About this page, Impressum  |   Form for messages to the publisher regarding this page  |   "ram@zedat.fu-berlin.de" (without the quotation marks) is the email-address of Stefan Ram.   |   A link to the start page of Stefan Ram appears at the top of this page behind the text "Stefan Ram".)  |   Copyright 1998-2014 Stefan Ram, Berlin. All rights reserved. This page is a publication by Stefan Ram. relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722673 stefan_ram:722673 Typnamen der Standardbibliothek in C++ Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722673, slrprddef722673, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Copyright 1998-2014 Stefan Ram, Berlin. All rights reserved. This page is a publication by Stefan Ram.
https://www.purl.org/stefan_ram/pub/typnamen_c++