Die Zeichenfolgenverkettung in C++
Auch Zeichenfolgen können „addiert“ werden.
erweiterte Typregeln
- ::std::string + ::std::string → ::std::string
- double + … → double
… + double → double
int + int → int
Wenn Zeichenfolgen „addiert“ werden, werden sie zu einer neuen Zeichenfolge verbunden.
main.cpp
#include <iostream>
#include <ostream>
#include <string>
using namespace ::std::literals;
int main() { ::std::cout << "abc"s + "def"s << "\n"s; }::std::cout
abcdef
main.cpp
#include <iostream>
#include <ostream>
#include <string>
using namespace ::std::literals;
int main() { ::std::cout << "12"s + "3"s << "\n"s; }::std::cout
123
Die Addition von Zeichenfolgen wird also anders umgesetzt als die von Zahlen. Wenn eine Umsetzung an Hand eines Operators und der Typen seiner Operanden ausgewählt wird, so sagt man, daß dies ein polymorpher Operator sei.
Hier handelt es sich um eine Situation, in der die kleinen »s« wirklich einmal benötigt werden. Eines der kleinen »s« kann weggelassen werden.
main.cpp
#include <iostream>
#include <ostream>
#include <string>
using namespace ::std::literals;
int main() { ::std::cout << "12"s + "3" << "\n"s; }- Protokoll
123
Zwei C -Strings (ohne kleines »s«) können aber nicht „addiert“ werden.
main.cpp
#include <iostream>
#include <ostream>
#include <string>
using namespace ::std::literals;
int main() { ::std::cout << "12" + "3" << "\n"s; }- Protokoll
error: invalid operands to binary 'operator+'
? Ausdrücke
Welche Werte haben die folgenden Ausdrücke jeweils?
- A: »1/2 + 1/2«
- B: »1/( 1. + 1 )«
- C: »1/2. + 1/2«
- D: »"e"s + "c"s«